hadoop&hive安装配置.pdf
3 台机器:master(10.0.0.200),slave1(10.0.0.201),slave2(10.0.0.202)系统都为 Centos 5假设将 master做为 namenonde,将 slave1和 slave2 做为 datanode1.在 master:(在 slave1 和 slave2 上操作和以下相同)vi/etc/hosts10.0.0.200 master10.0.0.201 slave110.0.0.202 slave22.用 root 登陆,建立 hadoop 用户useradd hadooppasswd hadoop输入 111111 做为密码3.su-hadoop#进入 hadoop 用户目录ssh-keygen-t rsa#建立 ssh 目录,敲回车到底cd.sshscp-r id_rsa.pub hadoopslave1:/home/hadoop/.ssh/authorized_keys_m#将 master上的密钥传到 slave1 的 hadoop 用户下,重命名为 authorized_keys_mscp-r id_rsa.pub hadoopslave2:/home/hadoop/.ssh/authorized_keys_m#将 master上的密钥传到 slave2 的 hadoop 用户下,重命名为 authorized_keys_m用 hadoop 用户进入 slave1scp-r id_rsa.pub hadoopmaster:/home/hadoop/.ssh/authorized_keys_s1#将 slave1 上的密钥传到 master的 hadoop 用户下用 hadoop 用户进入 slave2scp-r id_rsa.pub hadoopmaster:/home/hadoop/.ssh/authorized_keys_s2#将 slave2 上的密钥传到 master的 hadoop 用户下在 master,slave1和 slave22 上执行以下操作cat id_rsa.pub authorized_keys_m(_s)#将本地密钥添加 authorized_keys这样主节点和从节点之间就可以不用密码直接ssh 访问4.安装 JDK 到/usr/local 下命名为 jdk1.6然后:编辑三台机器的/etc/profile,增加如下容export JAVA_HOME=/usr/local/jdk1.6export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/libexport PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$PATH:$HOME/binexport HADOOP_HOME=/home/hadoop/hadoop-0.19.0export PATH=$PATH:$HADOOP_HOME/bin-hadoop 配置:1.将下载好的 hadoop-0.19.0.tar.gz文件上传到 master的/home/hadooptar zxvf hadoop-0.19.0.tar.gz#解压文件2.修改 4 个文件 hadoop-site.xml,hadoop-env.sh,masters,slavesmasters:masterslaves:slave1slave2hadoop-env.shexport JAVA_HOME=/usr/local/jdk1.6hadoop-site.xml:fs.default.namehdfs:/master:54310/mapred.job.tracker/hdfs:/master:54311/dfs.replication3#指定 HDFS 中每个 Block 被复制的次数,起数据冗余备份的作用。在典型的生产系统中,这个数常常设置为3hadoop.tmp.dir/home/hadoop/tmp/#hadoop 的 tmp 目录路径dfs.name.dir/home/hadoop/name/#hadoop 的 name 目录路径mapred.child.java.opts-Xmx512m#进程dfs.block.size67108864The default block size for new files.#新文件默认 block 大小dfs.permissionsfalse#效验 HDFS 文件系统权限dfs.web.ugihadoop,supergroup#hadoop 页面访问权限heartbeat.recheck.interval5000#心跳间隔时间,5000 秒=40 分3.配置好后先在/home/hadoop下建立/tmp 目录然后进入 hadoop 的 bin 目录 hadoop namenode-format 格式化 namenodestart-dfs启动 namenode 上的 hadoopnetstat-tnl查看 50070,54310,50090端口是否启动master:50070访问4.将配置好的 hadoop 打包cd/home/hadooptar-cvf hadoop-0.19.0.tar.gz hadoop-0.19.0/scp-r hadoop-0.19.0.tar.gz hadoopslave1:/home/hadoopscp-r hadoop-0.19.0.tar.gz hadoopslave2:/home/hadoop在 slave1 和 slave2 上配置和 master一样只需修改 hadoop-site.xml文件去掉dfs.name.dir/home/hadoop/name/#hadoop 的 name 目录路径增加一句dfs.data.dir/home/hadoop/data/#hadoop 的 data 目录路径5.进入 hadoop 的 bin 目录,start-dfs启动 datanode节点这样 hadoop 就配置完成了1)下载 hive目前最新版本是 hive-0.6.0,但是不支持 hadoop-0.21.0,所以需要安装hadoop-0.20.2 或者以下版本解压到每台服务器的/data/soft解压Java 代码rootmaster:/data/soft#tar zxvf hive-0.6.0.tar.gz建立软连Java 代码rootmaster:/data/soft#ln-s hive-0.6.0.tar.gz hive2)配置 hive1.修改 bin/hive-config.sh,添加 jdk 支持Java 代码export JAVA_HOME=/usr/local/jdkexport HIVE_HOME=/data/soft/hiveexport HADOOP_HOME=/data/soft/hadoop2.在 HDFS 中创建目录,并且将其开放 g+w 模式Java 代码rootmaster:/data/soft#hadoop fs mkdir/tmprootmaster:/data/soft#hadoop fs mkdir/user/hive/warehouserootmaster:/data/soft#hadoop fs chmod g+w/tmprootmaster:/data/soft#hadoop fs chmod g+w/user/hive/warehouse通过我的试验,以上创建目录的步骤是可以省略的,Hive 会自动创建需要的目录3.修改 conf/hive-default.xml,这个是hive 的关键配置,所以一般不要直接修改,新建 hive-site.xml 文件,将修改的容在这个里面配置。Xml 代码hive.exec.scratchdir/data/work/hive/tmpScratch space for Hive jobshive.querylog.location/data/work/hive/queryloghive.hwi.listen.host0.0.0.0This is the host address the Hive Web Interface willlisten onhive.hwi.listen.port9999This is the port the Hive Web Interface will listenon3)运行 hiveJava 代码rootmaster:/data/soft/hive/bin#./hiveHive history file=/tmp/root/hive_job_log_root_7_361521373.txthive4)测试 hive1.创建数据表Java 代码hive create TABLE pokes(id INT,name string);OKTime taken:8.192 seconds默认是使用输入格式(input format)为 text,分割符号使用A(ctrl-a).2.创建分区的数据表Java 代码hive CREATE TABLE invites(foo INT,bar STRING)PARTITIONED BY(dsSTRING);OKTime taken:36.562 seconds包含 2 列和一个分区列(ds)。分区列是一个虚拟列。它不是数据自身的一部分,但是它由得到分区,详细数据加载到里面3.显示数据表Java 代码hive SHOW TABLES;显示所有的数据表Java 代码hive SHOW TABLES.*s;只显示以s结尾的数据表4.查询Java 代码hive select*from pokes;OKTime taken:0.505 seconds5.从本地加载数据Java 代码hive LOAD DATA LOCAL INPATH./examples/files/kv1.txt OVERWRITE INTOTABLE pokes;这个文件位于 hive 的安装目录下,examples/files/kv1.txt6.从 hdfs 加载数据Java 代码LOAD DATA INPATH/jd/files/kv1.txt OVERWRITE INTO TABLE pokes;去掉 LOCAL,就是从 HDFS 加载关键字 OVERWRITE 意味着,数据表已经存在的数据将被删除。省略 OVERWRITE,数据文件将会添加到原有数据列表里7.删除数据表Java 代码hive drop table pokes;OKTime taken:0.726 seconds5)Heap size 设置Hive 默认-Xmx4096m修改 hive/bin/ext/util/execHiveCmd.shHADOOP_HEAPSIZE=2566)启动 Hive Thrift ServerJava 代码hive-service hiveserver默认使用 10000 端口,也可以使用 HIVE_PORT 来指定端口Java 代码rootmaster:/data/soft/hive/bin#./hive-service hiveserver-helpusage HIVE_PORT=xxxx./hive-service hiveserverHIVE_PORT:Specify the server port7)启动 hwiJava 代码bin/hive-service hwi取消日志的方式Java 代码nohup bin/hive-service hwi /dev/null 2/dev/null&