hadoop集群完全分布式集群搭建
1、集群部署规划
2、创建集群脚本
a)在/home/yrx目录下创建bin目录,并在bin目录下xsync创建文件,
文件内容如下:
注:如果没有安装xsync的话,我们可以先装
yum -y install rsync
#启动rsync服务
systemctl start rsyncd.service
systemctl enable rsyncd.service
#检查是否已经成功启动
netstat -lnp|grep 873
```sh
[yrx@hadoop102 ~]$ mkdir bin
[yrx@hadoop102 ~]$ cd bin/
[yrx@hadoop102 bin]$ touch sync
[yrx@hadoop102 bin]$ vi xsync
> 在该文件中编写如下代码
```sh
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=103; host<105; host++)); do
echo ------------------- hadoop$host --------------
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
b)修改脚本 xsync 具有执行权限
[yrx@hadoop102 bin]$ chmod 777 xsync
注意:如果将xsync放到/home/yrx/bin目录下仍然不能实现全局使用,可以将xsync移动到/usr/local/bin目录下。
3、免密登录
生成公钥和私钥:注:在ssh下创建
[yrx@hadoop102 .ssh]$ ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免密登录的目标机器上
[yrx@hadoop102 .ssh]$ ssh-copy-id hadoop102
[yrx@hadoop102 .ssh]$ ssh-copy-id hadoop103
[yrx@hadoop102 .ssh]$ ssh-copy-id hadoop10
4、开始配置集群
[yrx@hadoop102 .ssh]$ cd /opt/module/hadoop-2.7.2/etc/hadoop/
(1) 核心配置文件
配置core-site.xml
[yrx@hadoop102 hadoop]$ vi core-site.xml
在该文件中编写如下配置
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
<!-- 必须配置下面两项,否则会导致spark在使用beeline的时候插入数据报错 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
2)HDFS配置文件
配置hadoop-env.sh
[yrx@hadoop102 hadoop]$ vi hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
配置hdfs-site.xml
[yrx@hadoop102 hadoop]$ vi hdfs-site.xml
在该文件中编写如下配置
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:50090</value>
</property>
<!-- hadoop引入一个安全伪装机制,使得hadoo不允许上层系统直接将实际用户传递到hadoop层,而是将实际用户传递给一个超级代理,有此代理在hadoop上执行操作,避免任意客户端随意操作hadoop。hive2.2版本以上,需要在hadoop里面配置,以前的版本记得不需要 -->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
(3)YARN配置文件
配置yarn-env.sh
[yrx@hadoop102 hadoop]$ vi yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
配置yarn-site.xml
[yrx@hadoop102 hadoop]$ vi yarn-site.xml
在该文件中增加如下配置
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
(4)MapReduce配置文件
配置mapred-env.sh
[yrx@hadoop102 hadoop]$ vi mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
配置mapred-site.xml
[yrx@hadoop102 hadoop]$ mv mapred-site.xml.template mapred-site.xml
[yrx@hadoop102 hadoop]$ vi mapred-site.xml
在该文件中增加如下配置
<!-- 指定MR运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
5、群起集群
配置slaves
/opt/module/hadoop-2.7.2/etc/hadoop/slaves
[yrx@hadoop102 hadoop]$ vi slaves
该文件中增加如下内容:(只能有这些内容,如果里面有localhost删除它)
hadoop102
hadoop103
hadoop104
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行
在集群上分发配置好的Hadoop配置文件
[yrx@hadoop102 hadoop]$ xsync /opt/module/hadoop-2.7.2/
6、启动集群
(1)如果集群是第一次启动,需要格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)
[yrx@hadoop102 hadoop-2.7.2]$ bin/hdfs namenode -format
各个服务组件逐一启动/停止
(1)分别启动/停止HDFS组件
hadoop-daemon.sh start / stop namenode / datanode / secondarynamenode
(2)启动/停止YARN
yarn-daemon.sh start / stop resourcemanager / nodemanager
各个模块分开启动/停止(配置ssh是前提)常用
(1)整体启动/停止HDFS
start-dfs.sh / stop-dfs.sh
(2)整体启动/停止YARN
start-yarn.sh / stop-yarn.sh
启动历史服务器
在mapred-site.xml中写入一下配置
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop102:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop102:19888</value>
</property>
配置日志聚合
配置yarn-site.xml文件
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置 7 天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
启动历史服务器
mr-jobhistory-daemon.sh start historyserver