Hadoop集群配置【三、多节点部署】

参考http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/

a)   安装准备

所有机器的用户名和$HOME目录配置一致;(用户名、密码、目录结构)

所有机器JDK的安装目录为/usr/lib/jvm/java-6-openjdk;

每台机器的/etc/hosts文件中包括所有机器的IP和hostname一致;

建议在一台上配好后,直接把hosts加上的映射内容复制过去。

选取一台机器作为master,在配置都差不多的情况下,选取IP最低或最高的,便于管理和记忆。配置ssh,首先使其无密码连接到localhost【注意事项参见第二章和第一章】:

$ chmod g-w ~/.ssh/authorized_keys

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

  • 然后使其无密码连接到其他每个slave:

$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub username@slave

(注:若没成功,可能需要在slave节点修改$HOME /.ssh/authorized_keys的权限:$ chmod g-w ~/.ssh/authorized_keys)。如果机器上ssh-copy-id脚本无法运行那么就把你master上生成的公钥id_rsa.pub scp到每个slave上面,然后把该文件的内容追加到slave的$HOME /.ssh/authorized_keys文件中。

  • 在每台服务器的每块硬盘上建立用户可读写的目录$HDATA1, $HDATA2,…【这里为了提高机器硬盘的利用率】

b)   在master上解压hadoop-xxx.tgz

c)   修改$HADOOP_HOME/conf/masters

将masters文件中的hostname改为master的hostname(参照/ect/hosts文件中的对应关系)。

d)   修改$HADOOP_HOME/conf/slaves

修改slaves文件中的所有节点的hostname。(参照/ect/hosts文件中的对应关系)。

e)   修改$HADOOP_HOME/conf/core-site.xml

将fs.default.name中的hostname改为master的hostname。

f)   修改$HADOOP_HOME/conf/mapred-site.xml

将mapred.job.tracker中的hostname改为master的hostname。

g)  修改mapred-site.xml中的,来进行多硬盘配置,如果不想多硬盘,那么这一步就省去。

<property> 

  <name>mapred.local.dir</name> 

  <value>$HDATA1, $HDATA2, …</value>  

</property> 

修改hdfs-site.xml的dfs.data.dir

<property>

  <name>dfs.data.dir</name>

  <value>$HDATA1, $HDATA2, …</value>

</property>

[默认tmp dir是系统/tmp,可以更改为其他目录]

修改core-site.xml中的

<property> 

  <name> hadoop.tmp.dir </name> 

  <value> xxxx </value>  [这里不要设置为/tmp ,不然会卡掉]

</property> 

 

h) 配置好之后,将master上的hadoop目录压缩,然后scp到slave机上,因为他们所有的配置要求一致。

tar zcvf hadoop-xxx.tgz hadoop-xxx/

scp hadoop-xxx.tgz slave1:~/

scp hadoop-xxx.tgz slave2:~/

scp hadoop-xxx.tgz slave3:~/

scp hadoop-xxx.tgz slave4:~/

i)  检测hadoop集群是否安装成功

  • 开启hadoop

在master节点上进入hadoop的安装目录,第一次开启hadoop要格式化hadoop文件系统,输入以下命令:

$ bin/hadoop namenode –format

然后开启hadoop,输入命令:

$ bin/start-all.sh

检测hadoop进程是否都启动【出了问题就去第一章看看】

输入命令:$ jps

hadoop启动成功的话,master上会出现以下进程:

TaskTracker

JobTracker

DataNode

SecondaryNameNode

NameNode

Jps

slave上会出现以下进程:

TaskTracker

       DataNode

       Jps

  • 停止hadoop

在master节点上进入hadoop的安装目录,输入以下命令:

$ bin/stop-all.sh

 

j)   成功启动了Hadoop之后,可以运行一下Hadoop提供的wordcount实例,hadoop-examples-x-jar。

方法如下:

1.创建你要统计单词个数的文本

mkdir wordcount【创建一个目录来存放你要输入的文本文件file1,file2】

cd wordcount

echo ‘a b c c d e e e’ > file1【这里将一长串字母写入了file1,没有文件将会生成一个】

echo ‘a a c c a e e e’ > file2

2.在hdfs上创建输入目录

hadoop fs -mkdir /input  

3.把上述文件拷贝到HDFS

hadoop fs –copyFromLocal file* /input/
4.运行
hadoop jar hadoop-examples.jar  wordcount  /input /output

5.查看结果

hadoop fs –ls /output

这里面会显示长生的结果文件

hadoop fs –cat /output/part-r-00000

这样就可以查看结果内容了

[注意,/input这样就会把目录生成在hdfs的根目录,如果是hadoop fs -mkdir input ,那么就会在/user/$yourname/input]

 

附录【如果你没有足够的权限去配置系统,那么请让你的管理员做这些】:

1.修改每台服务器的hosts,将这6台服务器的内网IP和主机名的映射加入;
2.需要开启40030和60010的网页端口,方便查看状态,40030是hadoop的,60010是Hbase的;
3.这6台服务器的时间要同步,不同步就会出现一些问题;
4.Hbase的基本优化里需要对系统做如下更改:
1>设置文件打开数和进程数的限制ulimit and nproc
在/etc/security/limits.conf中添加下面两行:
daehbase – nofile 32768
daehbase soft/hard nproc 32000
2>在/etc/pam.d/common-session中添加一行
session required pam_limits.so

 

下一章说Hbase的配置

你可能感兴趣的:(hadoop)