HDFS+MapReduce+Hive+HBase 十分钟快速入门(二)

时间:2022-03-27 08:28:06
备注:fs.default.name指定NameNodeIP地址和端口号,缺省值是file:///,,表示使用本地文件系统,,用于单机非分布式模式。 dfs.replication指定HDFS中每Block被复制的次数,起数据冗余备份的作用。在典型的生产系统中,这个数常常设置为3

7.3.   修改masters

这一步只需要在master节点上执行。 这个文件存储备master节点的IP或机器名,建议使用机器名,每行一个机器名。主master会将元数据等备份到备master节点,文件位于conf目录下。 这里,我们为masters文件增加如下一行即可: Hadoop-A

7.4.   修改slaves

这一步也只需要在master节点上执行,以便masterssh2方式去启动所有的slave节点。 这个文件存储slave节点的IP或机器名,建议使用机器名,每行一个机器名。这里我们增加如下两行: Hadoop-B Hadoop-C

7.5.   修改hdfs-site.xml

所有机器做同样操作。 src/hdfs目录下,将hdfs-default.xml复制到conf目录,并重命名成hdfs-site.xml,这里不需要修改此文件。

8.     配置MapReduce

8.1.   修改mapred-default.xml

所有机器做同样操作。 src/mapred目录下,将mapred-default.xml复制到conf目录,并重命名成mapred-site.xml <property>   <name>mapred.job.tracker</name>   <value>Hadoop-A:54311</value>   <description>The host and port that the MapReduce job tracker runs   at.  If "local", then jobs are run in-process as a single map   and reduce task.   </description> </property> 备注:mapred.job.tracker指定 JobTrackerIP地址和端口号。缺省值是local,,表示在本地同一Java进程内执行JobTrackerTaskTracker,,用于单机非分布式模式。

9.     安装Hive

hadoop-0.20.0中并没有集成二进制的Hive,所以需要通过源代码编译一个,但是2009-8-19日提交的Hive并不能在hadoop-0.20.0上编译,而应当使用2009-8-4之后和2009-8-19之间的版本。

9.1.   安装ant

1)        http://ant.apache.org/ 下载ant二进制安装包,选择1.7.1版本 2)        下载后,将包apache-ant-1.7.1-bin.zip上传到/usr/local目录 3)        进入/usr/local目录,将apache-ant-1.7.1-bin.zip解压:unzip apache-ant-1.7.1-bin.zip 4)        进入/usr/local目录,为ant建一个软连接:ln -s apache-ant-1.7.1 ant 5)        修改/etc/profile,增加如下行: export PATH=/usr/local/ant/bin:$PATH 至此,ant算是安装好了

9.2.   安装ivy

1)        http://www.apache.org/dist/ant/ivy/ 下载ivy二进制安装包,选择2.1.0-rc2版本 2)        下载后,将包apache-ivy-2.1.0-rc2-bin.tar.gz上传到/usr/local目录 3)        进入/usr/local目录,将apache-ivy-2.1.0-rc2-bin.tar.gz解压:tar xzf apache-ivy-2.1.0-rc2-bin.tar.gz 4)        进入/usr/local目录,为ivy建一个软连接:ln -s apache-ivy-2.1.0-rc2 ivy 6)        修改/etc/profile,增加如下行: export IVY_HOME=/usr/local/ivy 至此,ivy算是安装好了。

9.3.   编译Hive

在编译Hive之前,请确保HADOOP_HOMEIVY_HOME两个环境变量已经生效。 1)        使用svnhttp://svn.apache.org/repos/asf/hadoop/hive/trunk下载Hive源代码 2)        将下载来的Hive源代码打包,然后上传到Hadoop-A机器 3)        解压Hive源代码包 4)        修改shims/ivy.xml 只保留0.20.0的配置,否则编译会出错   5)        运行ant开始编译: ant -Dtarget.dir=/usr/local/hadoop/hive -Dhadoop.version=0.20.0 package 这步完成之后,Hive会被安装到/usr/local/hadoop/hive目录下 6)        添加Hive环境变量,在/etc/profile文件中增加如下两行: export HIVE_HOME=/usr/local/hadoop/hive export PATH=$HIVE_HOME/bin:$PATH

10.             安装HBase

1)        http://svn.apache.org/repos/asf/hadoop/hbase/trunk下载最新的HBase源代码 2)        HBase源代码打包,并上传到Linux 3)        解压HBase源代码包 4)        编译HBase ant -Dtarget.dir=/usr/local/hadoop/hbase -Dhadoop.version=0.20.0 package 5)        编译成功之后,HBase可能并不象Hive一样自动安装到/usr/local/hadoop/hbase目录下,这个时候需要手工复制到HBase安装目录下:将build/hbase-0.21.0-dev整个目录复制到/usr/local/hadoop目录下,并将hbase-0.21.0-dev重命名成hbase即可 6)        进入/usr/local/hadoop/hbase/conf目录,将hbase-default.xml复制一份,并命名成hbase-site.xml 7)        修改hbase-site.xml 设置hbase.rootdir的值为:hdfs://Hadoop-A:54310/hbase 设置hbase.masterhbase.master可能为hbase.master.port)的值为:Hadoop-A:60000 8)        修改hbase-env.sh 设置环境变量JAVA_HOMEexport JAVA_HOME=/usr/local/jre 9)        Master节点,还需要修改regionservers,在这个文件中列出所有的slave机器,一行一个机器名: Hadoop-B Hadoop-C 这一步不用在slave节点上操作。 10)    通过以上操作,HBase已经安装和配置好,然后应当打包,将它部署到集群的所有节点上

11.             体验

11.1.       启动和停止

11.1.1. hadoop

在启动Hadoop集群之前,需要先格式化,在master节点上执行下面的命令即可: hadoop namenode -format

11.1.2. start-all.sh

这个脚本用来启动Hadoop 可以通过http://172.25.38.127:50070来查看HDFS的启动情况。   可以通过http://172.25.38.127:50030来查看MapReduce的启动情况。  

11.1.3. stop-all.sh

这个脚本用来停止Hadoop

11.2.       体验HDFS

HDFS的使用和普通的Linux命令差不多,只不过各类操作都必须作为hadoop命令的参数,如在hadoop上执行ls操作: hadoop fs -ls / 这条命令相当于Linux下的ls /

11.3.       体验MapReduce

体验MapReduce,可以使用Hadoop自带的WordCount,如: hadoop jar wordcount.jar /x/x /z 其中wordcount.jarWordCount的可执行包,/x/x是源文件,是一段以逗号分隔的英文片断,而/z是结果存放的目录。

11.4.       体验Hive

Hive的使用非常简单,照着http://wiki.apache.org/hadoop/Hive/GettingStarted上说的来操作就可以了。  

12.             FAQ

12.1.       如何查看Hadoop进程

如果安装了JDK,则在JDKbin目录下有一个jps命令,可以用来查看java进程,如: # jps 27612 NameNode 17369 Jps 16206 HQuorumPeer 15423 HMaster 27761 SecondaryNameNode 27839 JobTracker 其中,第一列为进程号,第二列为进程名称。

12.2.       ssh端口问题

如果ssh不是使用默认端口,则需要修改hadoop-env.sh文件中的HADOOP_SSH_OPTS环境变量,假设ssh端口号为8000,则可以简单设置为:export HADOOP_SSH_OPTS="-p 8000" 如果安装了HBase,还应当修改hbase-env.sh文件中的HBASE_SSH_OPTS

12.3.       首次ssh登录问题

首次通过ssh登录另一台机器时,可能会遇到一个yes确认过程,因此在启动之前,应当先手工或使用其它脚本ssh成功登录一次,否则容易遇到如下错误: r# ./start-hbase.sh DOSS38-127-sles10: Host key not found from database. DOSS38-127-sles10: Key fingerprint: DOSS38-127-sles10: xuror-ledab-buhim-zohok-tanop-cyrig-tysac-gyhyp-refan-semim-pyxex DOSS38-127-sles10: You can get a public key's fingerprint by running DOSS38-127-sles10: % ssh-keygen -F publickey.pub DOSS38-127-sles10: on the keyfile. DOSS38-127-sles10: warning: tcgetattr failed in ssh_rl_set_tty_modes_for_fd: fd 1: Invalid argument