【转载】HDFS+MapReduce+Hive+HBase 十分钟快速入门(二)

时间:2022-02-06 22:54:04

原文地址:http://jeffxie.blog.51cto.com/1365360/317460

备注: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