在Ubuntu14.04下配置Hadoop的真分布模式
设备:
操作系统:两台 Ubuntu 14.04.5 32位版本
软件:VMware 12
配置步骤
一、配置各个主机在同一个局域网下运行
将VMware的网络设置为桥接模式(对应更改为自己要桥接到的适配器),然后同时也把虚拟机的网络设置为桥接模式。
二、虚拟机配置
1. 为了便于区别其余主机名字,对本机ubuntu进行更改主机名
命令:sudo vim /etc/hostname
(对应地进行更改)
master节点:master
slave节点:hadoop-LZW
2. 添加局域网内的集群虚拟主机IP,映射IP
命令:sudo vim /etc/hosts
添加内容:
127.0.0.1 localhost
192.168.191.91 master
192.168.191.94 hadoop-LZW
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
3. 设置静态IP (ubuntu 14.04,其他版本略有差别)
默认网关为192.168.191.1,子网掩码为255.255.255.0
命令:sudo vim /etc/network/interfaces
添加以下内容:
auto eth0
iface eth0 inet static
address 192.168.191.91
netmask 255.255.255.0
gateway 192.168.191.1
dns-nameservers 211.136.20.203
另外修改文件/etc/NetworkManager/NetworkManager.conf,将managed参数设置为true
命令:sudo vim /etc/NetworkManager/NetworkManager.conf
4. 重启网络
命令:/etc/init.d/networking restart
(若以上命令无效可以重启虚拟机)
二、设置ssh免密登录
设置ssh免密登录操作已经在伪分布式配置部分配置好了,还没配置的可以访问这篇教程:Ubuntu14.04配置Hadoop的本地模式和伪分布模式教程
此处需要做的是将master节点(本机)的公钥传输给slave节点
命令:scp ~/.ssh/id_rsa.pub hadoop@hadoop-LZW:~/.ssh/authorized_keys
然后对文件进行赋予权限
命令:chmod 644 ~/.ssh/authorized_keys
以上命令只能满足master节点与各个slave节点的连通,若要实验各个节点能互相连通,可以改成:先从各个slave节点的公钥发送给master节点,然后再从master逐个发送公钥给各个slave节点即可。
发送公钥过程需要输入slave节点的登录密码。
三、配置环境变量
进入bashrc文件,添加以下内容
命令:sudo vim ~/.bashrc
# Java set
export JAVA_HOME=/usr/local/jdk1.8.0_201
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$PATH
# Hadoop set
export HADOOP_HOME=/usr/local/hadoop-3.0.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_ROOT_LOGGER=INFO,console
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
配置完后刷新环境变量
命令:source ~/.bashrc
四、修改Hadoop配置文件
以下配置文件均在/hadoop-3.0.2/etc/hadoop目录下
①配置workers文件
删除localhost
添加内容(一行一个)
hadoop-LZW
②配置core-site.xml
<configuration>
<property>
<name>fs.checkpoint.period</name>
<value>3600</value>
</property>
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop-3.0.2/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.191.91:9000</value>
</property>
</configuration>
③配置hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop-3.0.2/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop-3.0.2/tmp/dfs/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.191.91:50090</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>192.168.191.91:50070</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:/usr/local/hadoop-3.0.2/tmp/dfs/checkpoint</value>
</property>
<property>
<name>dfs.name.checkpoint.edits.dir</name>
<value>file:/usr/local/hadoop-3.0.2/tmp/dfs/edits</value>
</property>
</configuration>
④配置mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tarcker</name>
<value>192.168.191.91:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.191.91:19888</value>
</property>
</configuration>
⑤配置yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>192.168.191.91</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandle</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tarcker.address</name>
<value>192.168.191.91:8025</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.191.91:8030</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.191.91:8040</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.191.91:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.191.91:8088</value>
</property>
</configuration>
⑥配置log4j.properties
在文件最后面加上log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
以下配置文件均在/hadoop-3.0.2/sbin目录下,都在文件开头添加内容
①配置start-dfs.sh
HDFS_DATANODE_USER=master
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=master
HDFS_SECONDARYNAMENODE_USER=master
②配置stop-dfs.sh
HDFS_DATANODE_USER=master
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=master
HDFS_SECONDARYNAMENODE_USER=master
③配置start-yarn.sh
YARN_RESOURCEMANAGER_USER=master
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=master
④配置stop-yarn.sh
YARN_RESOURCEMANAGER_USER=master
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=master
五、同步到slave节点的虚拟机
将JDK1.8安装文件、hadoop-3.0.2安装文件、环境变量配置文件同步到各个虚拟机中
命令(有几个slave节点,就分别执行几次):
Sudo scp -r /usr/local/jdk1.8.0_201 hadoop-LZW:/usr/local/
Sudo scp -r /usr/local/hadoop-3.0.2 hadoop-LZW:/usr/local/
Sudo scp -r ~/.bashrc hadoop-LZW:~/
如果以上命令无效,可以将整个虚拟机的安装文件都复制到其他电脑上,打开此虚拟机,然后再重新配置一下slave节点的配置即可;如果连接不成功,有可能要重新安装ssh,发送公钥给master节点,或slave节点。
六、运行测试
命令:start-all.sh
访问192.191.168.91:8088页面
访问192.168.191.91:8042页面
到此,真分布式配置完成。