Hadoop完全分布式集群配置
完整配置视频可在b站观看hadoop完全分布式集群配置
第一步:安装虚拟机
Linux Centos6.8 64位
Vmware11
第二步:配master的固定IP
设置IP地址前要先看看vmware虚拟网络编辑器中的子网IP和网关IP
master、slave1和slave2的地址不能和网关IP重复。
固定IP设置:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
BOOTPROTO=static
添加master的地址:
IPADDR=192.168.65.100
NETMASK=255.255.255.0
GATEWAY=192.168.65.2
DNS=192.168.65.2
保存退出:wq
输入命令 service network restart
在虚拟机(或xshell)中ping一个网址ping www.baidu.com
如果成功ping通,说明设置成功
打开xshell
新建会话
在master中下面内容:
命令 yum -y install ntp openssh-clients openssh-server vim
如果yum命名报错则需要进行换源操作
换源:
输入:vi /etc/yum.repos.d/CentOS-Base.repo
注释掉所有的mirrorlist
换源之后
输入 yum -y install ntp openssh-clients openssh-server vim
安装完成后,
命令 poweroff关机
第三步:克隆虚拟机,配置slave1和slave2
在vmware界面右键master虚拟机
管理→克隆→下一步→创建完整克隆
克隆slave1和slave2
克隆好后打开slave1
输入 ifconfig -a
记录 IP地址(inet addr) 和 硬件地址(HWaddr)
输入vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改:
DEVICE=eth1
HWADDR=记录的硬件地址
IPADDR=192.168.65.101
命令 vi /etc/sysconfig/network
改主机名slave1
重启虚拟机reboot
按照相同的方式改slave2(IPADDR=192.168.65.102,主机名slave2)
第四步:配置SSH无密码登录
SSH:Secure Shell,是一种建立在TCP/IP的应用层与传输层之间的协议,可以保证远程登录和传输的安全。可以从一个节点安全的访问另外的节点。
配置ip映射
每台机器上
vi /etc/hosts
添加
192.168.65.100 master
192.168.65.101 slave1
192.168.65.102 slave2
配置公钥/私钥
ssh-keygen -t rsa
查看生成的公钥和私钥
ls /root/.ssh/
将公钥发送到所有的节点上:
ssh-copy-id -i /root/.ssh/id_rsa.pub master
ssh-copy-id -i /root/.ssh/id_rsa.pub slave1
ssh-copy-id -i /root/.ssh/id_rsa.pub slave2
然后在master上测试
输入 ssh slave1
看看是否能切换到slave1节点
然后退出:
exit
第五步:配置NTP时间同步
NTP是用来使计算机时间同步的一种协议,Hadoop集群要求主从节点的时间必须同步,所以接下来我们来配置时间同步服务
设置master节点为NTP服务主节点
输入:vi /etc/ntp.conf
注释掉以server开头的行
添加
restrict 192.168.65.2 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
fudge 127.127.1.0 stratum 10
同样
在slave1和slave2上
输入vi /etc/ntp.conf
注释所有的server行
然后添加
server master
关闭所有节点防火墙(在所有节点上操作):
命令 service iptables stop & chkconfig iptables off
先启动master节点的ntp服务:
service ntpd start & chkconfig ntpd on
然后slave1,slave2和master同步:
ntpdate master
最后slave1,slave2启动ntp
service ntpd start & chkconfig ntpd on
第六步:安装java
在所有的节点上操作
先进入opt目录:
cd opt/
打开Xshell的“新建文件传输”
将jdk-8u151-linux-x654.rpm文件拖到/opt目录下
上传完成后
执行命令
rpm -ivh jdk-8u151-linux-x64.rpm
配置环境变量
输入 vi /etc/profile
再最后加入
export JAVA_HOME=/usr/java/jdk1.8.0_151
export PATH=
P
A
T
H
:
PATH:
PATH:JAVA_HOME/bin
执行命令使修改生效:
source /etc/profile
查看是否配置成功
java -version
一定记得在所有节点上执行安装java的上述步骤
第七步:搭建Hadoop
修改hadoop基础配置文件
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
hadoop-env.sh
yarn-env.sh
slaves
进入opt目录
cd /opt
Xshell新建文件传输
上传hadoop-2.6.5.tar.gz文件到/opt目录
解压缩hadoop-2.6.5.tar.gz 文件
tar -zxvf hadoop-2.6.5.tar.gz -C /usr/local
解压后即可,看到/usr/local/hadoop-2.6.5文件夹
进入目录:
cd /usr/local/hadoop-2.6.5/etc/hadoop/
依次修改下面的文件:
① vi core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/log/hadoop/tmp</value>
</property>
</configuration>
②vi hadoop-env.sh
先注释掉上一个export行
然后添加export JAVA_HOME=/usr/java/jdk1.8.0_151
③vi hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///data/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
④首先从模板复制创建mapred-site.xml文件
cp mapred-site.xml.template mapred-site.xml
然后vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- jobhistory properties -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
⑤vi yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>${yarn.resourcemanager.hostname}:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>${yarn.resourcemanager.hostname}:8030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>${yarn.resourcemanager.hostname}:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>${yarn.resourcemanager.hostname}:8090</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>${yarn.resourcemanager.hostname}:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>${yarn.resourcemanager.hostname}:8033</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/data/hadoop/yarn/local</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/data/tmp/logs</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://master:19888/jobhistory/logs/</value>
<description>URL for job history server</description>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</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.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>2048</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>1</value>
</property>
</configuration>
⑥vi yarn-env.sh
添加java的路径
export JAVA_HOME=/usr/java/jdk1.8.0_151
⑦vi slaves
删除localhost,添加:
slave1
slave2
拷贝hadoop安装文件到集群slave节点
scp -r /usr/local/hadoop-2.6.5 slave1:/usr/local
scp -r /usr/local/hadoop-2.6.5 slave2:/usr/local
…
在所有的节点上
输入vi /etc/profile
添加Hadoop路径
export HADOOP_HOME=/usr/local/hadoop-2.6.5
export PATH=
H
A
D
O
O
P
H
O
M
E
/
b
i
n
:
HADOOP_HOME/bin:
HADOOPHOME/bin:PATH
在所有机器上执行
source /etc/profile
使修改生效
格式化NameNode只在master的 上面执行
进入目录
cd /usr/local/hadoop-2.6.5/bin
对namenode执行格式化
./hdfs namenode -format
第八步: 查看集群监控
启动HDFS集群
master上执行命令
cd /usr/local/hadoop-2.6.5/sbin/
./start-dfs.sh 启动HDFS
./start-yarn.sh 启动YARN
./mr-jobhistory-daemon.sh start historyserver启动日志
在windows系统设置IP映射
cat /etc/hosts
复制ip和主机名,添加到C:\Windows\System32\drivers\etc中去
192.168.65.100 master
192.168.65.101 slave1
192.168.65.102 slave2
打开浏览器查看集群监控
http://master:50070/