@DFFuture
2017-03-04T07:49:51.000000Z
字数 5433
阅读 9602
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
# 安装vim
sudo apt-get install -y vim
查看网络配置,结果如下图所示
ifconfig
enp0s25代表第一块网卡,为这个网卡配置静态IP
打开并编辑/etc/network/interfaces
sudo vim /etc/network/interfaces
追加以下内容,注意IP地址与上面表1中地址一一对应,再reboot
重启是该配置生效
auto enp0s25
# 静态IP
iface enp0s25 inet static
# IP地址
address 192.168.1.11
# 子网掩码
netmask 255.255.255.0
# 网关
gateway 192.168.1.1
# DNS
dns-nameservers 202.120.111.3
打开并编辑/etc/hosts
sudo vim /etc/hosts
删除127.0.1.1那一行,再加入以下内容(和表1的对应关系一致)
192.168.1.11 hadoop01
192.168.1.12 hadoop02
192.168.1.13 hadoop03
重启,hadoop02,hadoop03的网络配置类似,只是主机名、ip地址和hadoop01的不一样
都配置完后,查看是否配置成功
查看IP是否正确
ifconfig
主机之间是否能ping通
ping hadoop01 -c 3
ping hadoop02 -c 3
ping 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_keys
rm -rf id_rsa.pub
如果都能无密码登陆,说明配置成功(第一次ssh登录需要输入yes
)
ssh hadoop01
ssh hadoop02
ssh 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.gz
sudo mv jdk1.7.0_80 /local/jdk1.7
# 解压移动Hadoop软件包
tar -zxvf hadoop-2.7.3.tar.gz
sudo 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)
# 编辑bashrc
vim ~/.bashrc
如下图所示,输入以下变量
export JAVA_HOME=/local/jdk1.7
export HADOOP_HOME=/local/hadoop
export 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台主机的主机名都写入该文件中,配置如下
hadoop01
hadoop02
hadoop03
配置如下:
<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.sh
mr-jobhistory-daemon.sh start historyserver
进入hadoop01启动yarn和防护进程
start-yarn.sh
yarn-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.sh
mr-jobhistory-daemon.sh stop historyserver
[1] Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS
[2] Hadoop 集群安装