参考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
$ 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文件中。
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集群是否安装成功
在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
在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的配置