此文记录本人在Ubunt13.10环境下安装Hadoop集群的过程,其中每个步骤都是参考了前辈的经验,所以本文章不算原创,具体位置会给出参考文章的链接,但是从记录整个过程的角度,应该有一点原创的因素吧,whatever,我只是记录了我的过程,方便自己查阅,也方便其他人参考吧。
我使用了3台主机搭建集群,其中1台作为namenode其他两台为datanode,其ip和hostname分别如下:
172.20.53.251 Master
172.20.53.227 Slave1
172.20.53.217 Slave2
sudo mkdir /usr/java //创建目录
sudo tar zxvf jdk-8u25-linux-i586.tar.gz -C /usr/java //将下载的文件解压到/usr/java目录下
sudo mv /usr/java/jdk1.8.0_25 /usr/java/jdk1.8
sudo gedit /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$JAVA_HOME/bin"
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export JAVA_HOME=/usr/java/jdk1.8
sudo gedit /etc/profile
#set java environment
JAVA_HOME=/usr/java/jdk1.8
export JRE_HOME=/usr/java/jdk1.8/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
如果你安装Ubuntu的时候不是用的hadoop
用户,那么需要增加一个名为hadoop
的用户,并将密码设置为hadoop
。
创建用户
sudo useradd hadoop
修改密码为hadoop
,按提示输入两次密码
sudo passwd hadoop
给hadoop用户创建目录,方可登陆
sudo mkdir /home/hadoop
sudo chown hadoop /home/hadoop
可考虑为 hadoop 用户增加管理员权限,方便部署,避免一些权限不足的问题:
sudo adduser hadoop sudo
最后注销当前用户,使用hadoop用户进行登陆。
Ubuntu默认安装了SSH client,还需要安装SSH server。
sudo apt-get install openssh-server
集群、单节点模式都需要用到SSH无密码登陆,首先设置SSH无密码登陆本机。
输入命令
ssh localhost
会有如下提示(SSH首次登陆提示),输入yes。
然后按提示输入密码hadoop
,这样就登陆到本机了。但这样的登陆是需要密码的,需要配置成无密码登陆。
先退出刚才的ssh,然后生成ssh证书:
exit # 退出 ssh localhost
cd ~/.ssh # 如果没有该目录,先执行一次ssh localhost
ssh-keygen -t rsa # 一直按回车就可以,生成的密钥保存为.ssh/id_rsa
cp id_rsa.pub authorized_keys
此时再用ssh localhost
命令,就可以直接登陆了,如下图所示。
sudo gedit /etc/hostname
sudo gedit /etc/hosts
sudo gedit /etc/network/interfaces
sudo service network-manager restart
通过ping dns服务器等测试下设置是否正常就ok了。
这个操作是要让Master节点可以无密码SSH登陆到Slave节点上。
首先生成 Master 的公匙,在 Master 节点终端中执行:
cd ~/.ssh # 如果没有该目录,先执行一次ssh localhost
ssh-keygen -t rsa # 一直按回车就可以,生成的密钥保存为.ssh/id_rsa
Master 节点需能无密码 ssh 本机,这一步还是在 Master 节点上执行:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
完成后可以使用 ssh Master
验证一下。接着将公匙传输到 Slave1 节点:
scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/
scp时会要求输入Slave1上hadoop用户的密码(hadoop),输入完成后会提示传输完毕。
接着在 Slave1节点
上将ssh公匙保存到相应位置,执行
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
如果有其他 Slave 节点,也要执行 将公匙传输到 Slave 节点、在 Slave 节点上加入授权 这两步。
最后在 Master 节点上就可以无密码SSH到Slave1节点了。
ssh Slave1
其他节点也是如此。
sudo tar -zxvf hadoop-2.6.0.tar.gz -C /usr/local # 解压到/usr/local中
sudo mv /usr/local/hadoop-2.6.0/ /usr/local/hadoop # 将文件名改为hadoop
sudo chown -R hadoop:hadoop /usr/local/hadoop # 修改文件权限
Hadoop解压之后即可使用,输入命令hadoop会显示命令的用法:
/usr/local/hadoop/bin/hadoop
集群/分布式模式需要修改 etc/hadoop 中的5个配置文件,后四个文件可点击查看官方默认设置值,这里仅设置了正常启动所必须的设置项: slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 。
1, 文件 slave
cd /usr/local/hadoop/etc/hadoop
vim slaves
将原来 localhost
删除,把所有Slave的主机名写上,每行一个。例如我只有一个 Slave节点,那么该文件中就只有一行内容: Slave1。
2, 文件 core-site.xml
,将原本的如下内容:
改为下面的配置。后面的配置文件的修改类似。
fs.defaultFS
hdfs://Master:9000
hadoop.tmp.dir
file:/usr/local/hadoop/tmp
Abase for other temporary directories.
3, 文件hdfs-site.xml
,因为只有一个Slave,所以dfs.replication
的值设为1。
dfs.namenode.secondary.http-address
Master:50090
dfs.namenode.name.dir
file:/usr/local/hadoop/tmp/dfs/name
dfs.datanode.data.dir
file:/usr/local/hadoop/tmp/dfs/data
dfs.replication
1
4, 文件mapred-site.xml
,这个文件不存在,首先需要从模板中复制一份:
cp mapred-site.xml.template mapred-site.xml
然后配置修改如下:
mapreduce.framework.name
yarn
5, 文件yarn-site.xml
:
yarn.resourcemanager.hostname
Master
yarn.nodemanager.aux-services
mapreduce_shuffle
配置好后,将 Master 上的 Hadoop 文件复制到各个节点上(虽然直接采用 scp 复制也可以正确运行,但会有所不同,如符号链接 scp 过去后就有点不一样了。所以先打包再复制比较稳妥)。
cd /usr/local
sudo tar -zcf ./hadoop.tar.gz ./hadoop
scp ./hadoop.tar.gz Slave1:/home/hadoop
在Slave1
上执行:
sudo tar -zxf ~/hadoop.tar.gz -C /usr/local
sudo chown -R hadoop:hadoop /usr/local/hadoop
Slave2同上
然后在Master节点
上就可以启动hadoop了。
cd /usr/local/hadoop/
bin/hdfs namenode -format # 首次运行需要执行初始化,后面不再需要
sbin/start-dfs.sh
sbin/start-yarn.sh
通过命令jps
可以查看各个节点所启动的进程。
可以看到Master节点启动了NameNode
、SecondrryNameNode
、ResourceManager
进程。
Slave节点则启动了DataNode
和NodeManager
进程。
也可以通过Web页面看到查看DataNode和NameNode的状态,http://master:50070/
关闭Hadoop集群也是在Master节点上执行:
sbin/stop-dfs.sh
sbin/stop-yarn.sh
Hadoop安装参考教程如下:http://www.powerxing.com/install-hadoop-cluster-2-4-1/
我都是直接复制过来的。