集群分布式Hadoop系统安装及测试
本系统一共有三个节点,一个namenode,两个datanode,IP和主机名对应如下:
192.168.1.19 namenode
192.168.1.7 datanode1
192.168.1.20 datanode2
1、安装配置
1)、安装配置JDK,在三个节点都需要安装,下面操作在三个节点上都需要执行:
a、下载jdk-6u45-linux-x64.bin文件,将下载的文件放到/usr/java目录,下载地址为:
http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html
b、在/usr/java目录下运行 ./ jdk-6u45-linux-x64.bin 安装JDK。
# ./jdk-6u45-linux-x64.bin
c、配置JAVA_HOME以及CLASS_PATH,使用vi命令修改/etc/profile,在文件的最后加上如下代码:
JAVA_HOME=/usr/java/jdk1.6.0_45 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME PATH CLASSPATH/etc/profile是为每个用户配置环境变量信息,当用户第一次登陆系统时,该文件被执行,这个文件是针对所有用户的,修改对所有用户都有效。
d、执行java-version查看当前版本配置有没有生效,编写HelloWorld.java看看是否能正确编译执行。
2)、在三个节点上分别创建hadoop用户,并设置密码,此处将所有密码设为hadoop。
# useradd –m –s /bin/bash hadoop # passwd hadoop-m参数表示为用户创建home目录,-s/bin/bash表示为用户指定shell,也可以不指定,默认为sh,不好用。创建hadoop用户后,以后进行hadoop相关操作时需要用hadoop登录。不能用root或其他用户登录。
3)、下载Hadoop,此处使用的版本为hadoop-1.2.1,三个节点都需要,可以下载一次后用scp复制到其他节点(最好配置后再使用scp复制,这样只需要配置一次),下载地址为:https://archive.apache.org/dist/hadoop/core/hadoop-1.2.1/
下载之后用下面命令解压:
$ tar –xzvf hadoop-1.2.1.tar.gz
4)、配置SSH,配置SSH的目的是为了在各个节点访问时免输入密码,仅第一次使用时需要密码。执行如下命令(在所有三个节点上):
$ mkdir .ssh
在namenode上生成密钥对,在namenode执行如下命令:
$ ssh-keygen –t rsa
一直按<Enter>键,使用默认配置,最终就会将生成的密钥对保存在.ssh/id_rsa中。接着执行下面命令:
$ cd ~/.ssh $ cp id_rsa.pub authorized_keys $ scp authorized_keys datanode1:/home/hadoop/.ssh $ scp authorized_keys datanode2:/home/hadoop/.ssh
最后进入所有机器的.ssh目录,改变authorized_keys的许可权限:
$ chmod 644 authorized_keys
644的二进制为110 100100,表示拥有者可以读写,同组的用户可读,其他组的用户可读。
5)、配置hadoop环境。在第3)步时,我们已经解压hadoop,进入hadoop文件夹。hadoop的配置文件主要放在hadoop安装目录下的conf目录中,主要有以下几个配置文件要修改:
conf/hadoop-env.sh: hadoop环境变量设置
conf/core-site.xml: 主要完成namenode的IP和端口设置
conf/hdfs-site.xml: 主要完成HDFS的数据块副本等参数设置
conf/mapred-site.xml: 主要完成JobTrackerIP和端口的设置
conf/masters: 完成Master节点IP设置
conf/slaves: 完成Slaves节点设置
a、配置core-site.xml文档如下,指定hadoop.tmp目录和IP:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl"href="configuration.xsl"?> <!-- Put site-specific propertyoverrides in this file. --> <configuration> <property> <name>hadoop.tmp.dir</name> <value>/tmp/hadoop/hadoop-${user.name}</value> </property> <property> <name>fs.default.name</name> <value>hdfs://192.168.1.19:9000</value> </property> </configuration>b、配置hdfs-site.xml文档的内容如下:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific propertyoverrides in this file. --> <configuration> <property> <name>dfs.namenode.name.dir</name> <value>/home/hadoop/hadoop-1.2.1/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:///home/hadoop/hadoop-1.2.1/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
c、配置mapred-site.xml文件
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl"href="configuration.xsl"?> <!-- Put site-specific propertyoverrides in this file. --> <configuration> <property> <name>mapred.job.tracker</name> <value>192.168.1.19:9001</value> </property> <property> <name>mapreduce.cluster.local.dir</name> <value>/home/hadoop/hadoop-1.2.1/mapred/local</value> </property> <property> <name>mapreduce.jobtracker.system.dir</name> <value>/home/hadoop/hadoop-1.2.1/mapred/system</value> </property> </configuration>
注:上面出现IP的地方一定要替换成自己的IP,端口不要变。
d、修改conf/masters文件
修改conf/masters文件为Master的主机名,每个主机名一行,此处即为namenode.
e、加入所有Slaves的主机名,即datanode1和datanode2.
f、把hadoop复制到其他节点,执行下面的命令:
$ scp –r hadoop-1.2.1 datanode1:/home/hadoop $ scp –r hadoop-1.2.1 datanode2:/home/hadoop
g、检查每个节点的JAVA_HOME配置,如果已经配置过了,那么恭喜你,配置完成了。
2、运行Hadoop
1)、格式化HDFS系统,在初次安装和使用Hadoop之前,需要格式化分布式文件系统HDFS,操作命令如下:
$ bin/hadoop namenode –format
2)启动Hadoop环境,启动Hadoop守护进程。在namenode上启动NameNode、JobTracker和SecondaryNameNode,在datanode1和datanode2上启动DataNode和TaskTracker,并用如下jps命令检查启动情况:
$bin/start-all.sh $jps
在namenode上启动正常结果如下(使用jps)所示:
在datanode上使用jps结果如下(datanode不需要使用start-all.sh命令):
要停止hadoop守护进程,可以使用如下命令: $bin/stop-all.sh
3)运行测试程序
下面用一个程序测试能否运行任务,示例程序是一个Hadoop自带的PI值的计算,第一个参数是指要运行的map的次数,第二个参数是指每个map任务取样的个数。在hadoop目录执行:
$bin/hadoop jar hadoop-examples-1.2.1.jar pi 2 5
最后结果如下:
至此,配置结束。
参考文献:《深入理解大数据 大数据处理与编程实战》主编:黄宜华老师(南京大学)