@DFFuture
2017-03-04T07:49:51.000000Z
字数 5433
阅读 9771
Ubuntu Hadoop
- 操作系统:Ubuntu 16.04
- 软件包:hadoop-2.7.3.tar.gz, jdk-7u80-linux-x64.tar.gz
- 硬件: 3台Dell Precison Tower 7810,1台交换机
主机连接交换机,这样主机在同一个局域网下
集群规划如下表1所示
| 主机名 | IP地址 | 进程 |
|---|---|---|
| hadoop01 | 192.168.1.11 | ResourceManager, DataNode, NodeManager, WebAppProxyServer |
| hadoop02 | 192.168.1.12 | NameNode, DataNode, NodeManager,JobHistoryServer |
| hadoop03 | 192.168.1.13 | SencodaryNameNode, DataNode, NodeManager |
下面以hadoop01为例配置网络
Alt + Ctrl + T调出终端Terminal
输入以下命令查看主机名是否和标签上的主机名一致
# 查看主机名hostname
如果不一致,修改主机名,重启
# 修改主机名sudo vim /etc/hostname# 重启reboot
[注] Ubuntu不自带Vim编辑器,需要另外安装(也可以用gedit进行编辑)
# 更新源sudo apt-get update# 安装vimsudo apt-get install -y vim
查看网络配置,结果如下图所示
ifconfig
enp0s25代表第一块网卡,为这个网卡配置静态IP
打开并编辑/etc/network/interfaces
sudo vim /etc/network/interfaces
追加以下内容,注意IP地址与上面表1中地址一一对应,再reboot重启是该配置生效
auto enp0s25# 静态IPiface enp0s25 inet static# IP地址address 192.168.1.11# 子网掩码netmask 255.255.255.0# 网关gateway 192.168.1.1# DNSdns-nameservers 202.120.111.3
打开并编辑/etc/hosts
sudo vim /etc/hosts
删除127.0.1.1那一行,再加入以下内容(和表1的对应关系一致)
192.168.1.11 hadoop01192.168.1.12 hadoop02192.168.1.13 hadoop03
重启,hadoop02,hadoop03的网络配置类似,只是主机名、ip地址和hadoop01的不一样
都配置完后,查看是否配置成功
查看IP是否正确
ifconfig
主机之间是否能ping通
ping hadoop01 -c 3ping hadoop02 -c 3ping hadoop03 -c 3
下图说明可以ping通hadoop01(ping通其他主机结果类似)

默认情况下,Ubuntu是没有安装ssh服务端,所以先安装openssh-server
sudo apt-get install -y openssh-server
3台主机都安装openssh-server后,再进行以下步骤
仍以hadoop01为例,hadoop02和hadoop03配置类似
生成ssh公钥
# 如果没有~/.ssh目录,通过下面命令会自动生成该目录ssh localhost# 进入.ssh目录cd ~/.ssh# 如果之前生成过密钥,先删除以前的密钥rm ./id_rsa*# 生成密钥ssh-keygen -t rsa -P "" #一直按回车就可以了# 将公钥添加到autorized_keys中cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
将公钥传输到其他节点上(需要输入密码)
scp ~/.ssh/id_rsa.pub hadoop@hadoop02:~scp ~/.ssh/id_rsa.pub hadoop@hadoop03:~
进入hadoop02和hadoop03的主目录,ls可以看到公钥id_rsa.pub,将公钥添加到authorized_keys中,然后删除公钥
cat ~/id_rsa.pub >> ~/.ssh/authorized_keysrm -rf id_rsa.pub
如果都能无密码登陆,说明配置成功(第一次ssh登录需要输入yes)
ssh hadoop01ssh hadoop02ssh hadoop03
这样通过SSH连接,在一台主机就可以登录所有的主机进行管理
在根目录下创建local文件夹,JAVA和Hadoop等软件将安装在这个目录下
# 创建目录sudo mkdir /local/# 修改目录拥有者sudo chown hadoop:hadoop /local
进入软件包所在目录,将hadoop-2.7.3.tar.gz,jdk-7u80-linux-x64.tar.gz解压并移到/local/目录下
# 解压移动JAVA软件包tar -zxvf jdk-7u80-linux-x64.tar.gzsudo mv jdk1.7.0_80 /local/jdk1.7# 解压移动Hadoop软件包tar -zxvf hadoop-2.7.3.tar.gzsudo mv hadoop-2.7.3 /local/hadoop
软件在hadoop01上安装好后,可以通过scp软件复制到其他主机上,这里先复制Java,等配置完Hadoop后,再复制Hadoop
scp -r /local/jdk1.7 hadoop@hadoop02:/local/scp -r /local/jdk1.7 hadoop@hadoop03:/local/
打开并编辑配置文件~/.bashrc(不是/etc/profile)
# 编辑bashrcvim ~/.bashrc
如下图所示,输入以下变量
export JAVA_HOME=/local/jdk1.7export HADOOP_HOME=/local/hadoopexport PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存后执行source ~/.bashrc使配置生效
查看环境变量配置是否成功,如下图所示,说明配置成功
# 查看JAVA版本java -version# 查看Hadoop版本hadoop version

集群/分布式模式需要修改 /local/hadoop/etc/hadoop 中的5个配置文件,更多设置项可点击查看官方说明: slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
slaves文件中记录的主机都会作为DataNode使用,根据表1所示,3台主机都有DataNode,所以将3台主机的主机名都写入该文件中,配置如下
hadoop01hadoop02hadoop03
配置如下:
<configuration><property><name>fs.defaultFS</name><value>hdfs://hadoop02:9000</value></property><property><name>hadoop.tmp.dir</name><value>/local/hadoop/tmp</value></property><property><name>fs.trash.interval</name><value>10080</value></property></configuration>
配置如下:
<configuration><property><name>dfs.replication</name><value>3</value></property><property><name>dfs.permissions.enabled</name><value>false</value></property><property><name>dfs.namenode.http-address</name><value>hadoop02:50070</value></property><property><name>dfs.namenode.secondary.http-address</name><value>hadoop03:50090</value></property></configuration>
配置如下:
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>hadoop02:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop02:19888</value></property><property><name>mapreduce.job.ubertask.enable</name><value>true</value></property></configuration>
配置如下:
<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.resourcemanager.hostname</name><value>hadoop01</value></property><property><name>yarn.web-proxy.address</name><value>hadoop01:8888</value></property><property><name>yarn.log-aggregation-enable</name><value>true</value></property><property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value></property></configuration>
先格式化NameNode
hadoop namenode -format
再将Hadoop复制到其他主机中
scp -r /local/hadoop hadoop@hadoop02:/local/scp -r /local/hadoop hadoop@hadoop03:/local/
进入hadoop02启动dfs和jobhistory
start-dfs.shmr-jobhistory-daemon.sh start historyserver
进入hadoop01启动yarn和防护进程
start-yarn.shyarn-daemon.sh start proxyserver
进入各个主机通过以下命令查看进程
jps
各节点进程如下图所示,说明hadoop集群启动成功
hadoop01:
hadoop02:
hadoop03:

通过浏览器访问 192.168.1.11:8088 和 182.168.1.12:50070 可以查看Yarn和HDFS相关信息
yarn界面:
hdfs界面:

通过执行一个简单的分布式实例来测试Hadoop集群
## 上传profile文件hdfs dfs -put /etc/profile /profile## 执行wordcount样例hadoop jar /local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /profile /out
访问http://192.168.1.11:8088/cluster,可以看到多了一个应用,如下图所示

访问http://192.168.1.12:50070/explorer.html#/查看Browse Directory,如下图所示

## 查看WordCount的统计结果hdfs dfs -cat /out/part-r-00000
如果实例执行成功,说明集群配置正确
在hadoop01上关闭Yarn相关进程
stop-yarn.sh
在hadoop02上关闭HDFS相关进程
stop-dfs.shmr-jobhistory-daemon.sh stop historyserver
[1] Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS
[2] Hadoop 集群安装