一:编辑每台机器的host文件,将集群中的每台机器添加进去。本次安装中Hadoop集群一共有三台机器。
191.8.3.2 labserver-001 slave
191.8.3.3 labserver-002 slave
191.8.2.203 labserver-003 master
191.8.3.3 labserver-002 slave
191.8.2.203 labserver-003 master
二:每台机器环境预设置
1、建立hadoop帐号
2、安装JDK,在本次尝试中,安装了jdk-6u43-linux-x64.bin
三:配置集群的SSH免密码自动登录环境
1、集群中每台机器的hadoop目录下面建立.ssh目录,并生成机器的公钥私钥,命令为:
ssh-keygen -t rsa
2、将本机的公钥集中上传到一台master的机器,在本次安装中,公钥文件上传到labserver-003。
例如,某一台机器的上传命令如下:
scp id_rsa.pub hadoop@labserver-002:/home/hadoop/.ssh/labserver-002_id_rsa.pub
scp id_rsa.pub hadoop@labserver-002:/home/hadoop/.ssh/labserver-003_id_rsa.pub
例如,某一台机器的上传命令如下:
scp id_rsa.pub hadoop@labserver-002:/home/hadoop/.ssh/labserver-002_id_rsa.pub
scp id_rsa.pub hadoop@labserver-002:/home/hadoop/.ssh/labserver-003_id_rsa.pub
3、labserver-003机器上将集群中的所有公钥加入到.ssh目录下的authorized_keys中,包括自己本身机器的公钥。本机的公钥也要加入的原因是labserver-003在集群中存在2种角色,HDFS的namenode和jobtracker,可能存在需要从本机的服务通过SSH连接本机的另外一个服务的可能。
cat labserver-002_id_rsa.pub >> authorized_keys
cat labserver-003_id_rsa.pub >> authorized_keys
cat labserver-003_id_rsa.pub >> authorized_keys
3.1 把labserver-003机器上的 authorized_keys上传到各个机器,此处是为了建立彻底的SSH免登录的环境,各台机器服务角色变化的时候可以自由的连接集群内的机器环境。
4、测试SSH免密码登录
三、配置hadoop的运行环境参数
1、在labserver-003的master机器上将
hadoop-1.2.1-bin.tar.gz包解开成 /home/hadoop/hadoop-1.2.1目录
2、配置conf目录下的hadoop-env.sh文件,配置JAVA_HOME环境变量
export JAVA_HOME=/home/hadoop/jdk1.6.0_43
3、配置core-site.xml文件
(1)建立Hadoop的数据目录:/home/hadoop/hadoop_tmp/,并配置到hadoop.tmp.dir属性变量中。
(2)配置HDFS的服务地址fs.default.name为hdfs://labserver-003:9000/,此处的机器名沿用回/etc/hosts文件中的定义:labserver-003。
注:对Hadoop 集群来说,集群内的机器互通很重要,尽量沿用每台机器上的/etc/hosts定义的机器进行配置。 配置完毕后,core-site.xml文件内容如下:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://labserver-003:9000/</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop_tmp/</value>
</property>
</configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://labserver-003:9000/</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop_tmp/</value>
</property>
</configuration>
4、配置hdfs-site.xml文件
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
由于此处的安装只有2台机器做HDFS的DataNode,因此,dfs.replication配置成2
5、配置mapred-site.xml ,配置JobTracker的服务地址
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>http://labserver-003:9001</value>
</property>
</configuration>
<property>
<name>mapred.job.tracker</name>
<value>http://labserver-003:9001</value>
</property>
</configuration>
6、配置masters和slaves文件
hadoop@labserver-001:~/hadoop-1.2.1/conf$ more masters
labserver-003
hadoop@labserver-001:~/hadoop-1.2.1/conf$ more slaves
labserver-002
labserver-001
labserver-003
hadoop@labserver-001:~/hadoop-1.2.1/conf$ more slaves
labserver-002
labserver-001
7、将hadoop配置同步到集群中的每台机器
(1)在每台机器建立/home/hadoop/hadoop_tmp/目录
(2)将hadoop-1.2.1/目录同步到集群中的每一台机器的hadoop帐号的hadoop目录中。
四、从labserver-003机器进行启动hadoop集群
1、运行./bin/start-all.sh 观察集群中的每台机器启动的情况
这是master的运行情况,启动了NameNode、JobTacker、SecondaryNameNode等服务
hadoop@labserver-003:~$ jps
22051 Jps
20363 SecondaryNameNode
20085 NameNode
20474 JobTracker
这是Slave机器的情况,启动了TaskTracker、DataNode的服务。
22051 Jps
20363 SecondaryNameNode
20085 NameNode
20474 JobTracker
这是Slave机器的情况,启动了TaskTracker、DataNode的服务。
hadoop@labserver-001:~/hadoop-1.2.1/conf$ jps
25242 TaskTracker
24834 DataNode
25242 TaskTracker
24834 DataNode
2、运行示例程序WordCount
从HDFS上的当前目录建立input子目录
./bin/hadoop dfs -mkdir input
放置待分析的文件到input目录下
./bin/hadoop dfs -put *.xml input
运行wordcount的程序
./bin/hadoop jar hadoop-examples-1.2.1.jar wordcount input output
运行结果此处不贴出。
3、运行基准测试:
(1)写操作
./bin/hadoop jar hadoop-test-1.2.1.jar DFSCIOTest -write -nrFiles 20 -fileSize 1024
可以看到Slave机器上面的负载情况,网络IO基本到达了极限。
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
35 13 48 1 0 2| 0 139M| 101M 107M| 0 0 | 23k 33k
21 12 63 2 0 3| 0 194M| 110M 106M| 0 0 | 17k 33k
24 14 57 2 0 3| 0 259M| 107M 108M| 0 0 | 16k 34k
22 11 62 2 0 3| 0 194M| 104M 109M| 0 0 | 17k 34k
20 12 59 7 0 2| 0 303M| 106M 111M| 0 0 | 17k 33k
25 13 59 1 0 2| 0 86M| 107M 97M| 0 0 | 16k 33k
15 11 70 2 0 2| 0 194M| 100M 94M| 0 0 | 14k 28k
18 12 65 2 0 3| 0 157M| 101M 106M| 0 0 | 16k 34k
18 12 66 1 0 3| 0 230M| 105M 111M| 0 0 | 16k 34k
17 15 64 3 0 2| 0 213M| 106M 106M| 0 0 | 16k 35k
26 13 56 1 0 3| 0 174M| 108M 107M| 0 0 | 16k 32k
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
35 13 48 1 0 2| 0 139M| 101M 107M| 0 0 | 23k 33k
21 12 63 2 0 3| 0 194M| 110M 106M| 0 0 | 17k 33k
24 14 57 2 0 3| 0 259M| 107M 108M| 0 0 | 16k 34k
22 11 62 2 0 3| 0 194M| 104M 109M| 0 0 | 17k 34k
20 12 59 7 0 2| 0 303M| 106M 111M| 0 0 | 17k 33k
25 13 59 1 0 2| 0 86M| 107M 97M| 0 0 | 16k 33k
15 11 70 2 0 2| 0 194M| 100M 94M| 0 0 | 14k 28k
18 12 65 2 0 3| 0 157M| 101M 106M| 0 0 | 16k 34k
18 12 66 1 0 3| 0 230M| 105M 111M| 0 0 | 16k 34k
17 15 64 3 0 2| 0 213M| 106M 106M| 0 0 | 16k 35k
26 13 56 1 0 3| 0 174M| 108M 107M| 0 0 | 16k 32k
Master上得到的测试结果如下:
13/11/06 12:29:33 INFO fs.TestDFSIO: ----- TestDFSIO ----- : write
13/11/06 12:29:33 INFO fs.TestDFSIO: Date & time: Wed Nov 06 12:29:33 CST 2013
13/11/06 12:29:33 INFO fs.TestDFSIO: Number of files: 20
13/11/06 12:29:33 INFO fs.TestDFSIO: Total MBytes processed: 20480
13/11/06 12:29:33 INFO fs.TestDFSIO: Throughput mb/sec: 32.43909354275134
13/11/06 12:29:33 INFO fs.TestDFSIO: Average IO rate mb/sec: 34.38865280151367
13/11/06 12:29:33 INFO fs.TestDFSIO: IO rate std deviation: 8.757448107989758
13/11/06 12:29:33 INFO fs.TestDFSIO: Test exec time sec: 208.164
13/11/06 12:29:33 INFO fs.TestDFSIO: Date & time: Wed Nov 06 12:29:33 CST 2013
13/11/06 12:29:33 INFO fs.TestDFSIO: Number of files: 20
13/11/06 12:29:33 INFO fs.TestDFSIO: Total MBytes processed: 20480
13/11/06 12:29:33 INFO fs.TestDFSIO: Throughput mb/sec: 32.43909354275134
13/11/06 12:29:33 INFO fs.TestDFSIO: Average IO rate mb/sec: 34.38865280151367
13/11/06 12:29:33 INFO fs.TestDFSIO: IO rate std deviation: 8.757448107989758
13/11/06 12:29:33 INFO fs.TestDFSIO: Test exec time sec: 208.164
(2)读操作
./bin/hadoop jar hadoop-test-1.2.1.jar DFSCIOTest -read -nrFiles 10 -fileSize 1024
13/11/06 12:34:30 INFO fs.TestDFSIO: ----- TestDFSIO ----- : read
13/11/06 12:34:30 INFO fs.TestDFSIO: Date & time: Wed Nov 06 12:34:30 CST 2013
13/11/06 12:34:30 INFO fs.TestDFSIO: Number of files: 10
13/11/06 12:34:30 INFO fs.TestDFSIO: Total MBytes processed: 10240
13/11/06 12:34:30 INFO fs.TestDFSIO: Throughput mb/sec: 169.857014895664
13/11/06 12:34:30 INFO fs.TestDFSIO: Average IO rate mb/sec: 286.3677673339844
13/11/06 12:34:30 INFO fs.TestDFSIO: IO rate std deviation: 117.01923701746219
13/11/06 12:34:30 INFO fs.TestDFSIO: Test exec time sec: 34.891