hadoop搭建【物理实验室环境搭建hadoop集群】

        环境准备:centos7.5,hadoop 3.1.3,jdk 1.8.0_161

        前言:经过半个月的时间,请教了往届的师兄师姐、身边的朋友、公司里面的维修人员、在网上找到的自学运维和阿里P7的两位老大哥,终于把平台在实验室环境下搭建成功。总结下来,实验室的环境不像自己在虚拟机中随意更改,所以这半个月都在修改环境,搭建集群只用不到一个小时的时间。从最初出现问题不知道是什么原因,到后来知道原因着手去修改,过程实在是很痛苦。再次感谢在搭建平台过程中给与我帮助的大哥大姐们,现在将搭建平台的步骤列举如下:

1、hadoop组成
MapReduce(计算)--Yarn(资源调度)--HDFS(数据存储)--common(辅助工具)
2、 hadoop环境搭建前期准备工作
2.1、查看网络配置
cd /etc/sysconfig/network-scripts/
vim 网卡名称
2.2、修改主机名
sudo hostnamectl --static set-hostname hadoop101
2.3、安装一些额外的软件源
`sudo yum install -y epel-release
出现::Another app is currently holding the yum lock; waiting for it to exit...::可能是系统自动升级正在运行,yum在锁定状态中。执行#rm -f /var/run/yum.pid。
2.4、安装额外的依赖
`sudo yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static`
2.5、 配置主机映射
`` sudo vim /etc/hosts
`` 添加如下内容
`` 10.84.126.2    hadoop101
`` 10.84.126.8    hadoop102
`` 10.84.126.11   hadoop103
2.6、修改window10的主机映射文件
`` 进入C:\Windows\System32\drivers\etc路径
`` 拷贝hosts文件到桌面
``     打开桌面hosts文件并添加如下内容
`` 10.84.126.2    hadoop101
`` 10.84.126.8    hadoop102
`` 10.84.126.11   hadoop103
`` 将桌面hosts文件覆盖C:\Windows\System32\drivers\etc路径hosts文件
2.7、关闭防火墙
hadoop搭建无论是伪分布式还是集群,都要关闭防火墙,为什么?
::集群不需要考虑安全性,因为都是内网搭建的,对外还有一个服务器的,那个服务器有防火墙,由它来访问内网集群,如果内网内开启防火墙,内网集群通讯会出现很多问题。
sudo systemctl stop firewalld
sudo systemctl disable firewalld
 sudo systemctl status firewalld
2.8、创建新用户
sudo useradd hike
sudo passwd hike
2.9、 配置hike用户具有root权限
以后的所有操作都用hike来进行,但有时需要做一些高权限的操作(安装软件包,启动关闭服务)需要hike临时获取root权限。
执行:visudo
找到91行(:set nu显示行号)
`` Allow root to run any commands anywhere
`` root    ALL=(ALL)     ALL
`` hike   ALL=(ALL)     NOPASSWD:ALL
:wq退出,如果格式错误会显示错误信息,正确退出即格式没有问题。
2.10、切换用户!在/opt目录下创建文件夹(在三台主机上都这么配置)
`` su hike
`` sudo mkdir /opt/module /opt/software
`` sudo chown hike:hike /opt/module /opt/software
配置完成,进入opt目录查看是否有两个文件夹,且所有者为hike,之后以一般用户登录虚拟机。使用一般用户登录系统,进入/opt/software/查看是否可以创建目录(touch b),如果可以,再sudo ls,成功,则说明权限没有问题。可以ping通主机、外网(ping master ping www.baidu.com)说明单台主机的配置已经成功!
2.11、 将jdk、hadoop上传到主机
`hadoop-3.1.3.tar.gz jdk-8u212-linux-x64.tar`直接拖入即可
2.12 、解压文件
`tar -xf jdk-8u212-linux-x64.tar.gz -C /opt/module/
`tar -xf hadoop-3.1.3.tar.gz -C /opt/module/`
2.13、定义环境变量
`sudo vim /etc/profile.d/my_env.sh`
添加如下内容
`` #JAVA_HOME
`` export JAVA_HOME=/opt/module/jdk1.8.0_212
`` export PATH=$PATH:$JAVA_HOME/bin
`` #HADOOP_HOME
`` export HADOOP_HOME=/opt/module/hadoop-3.1.3
`` export PATH=$PATH:$HADOOP_HOME/bin
`` export PATH=$PATH:$HADOOP_HOME/sbin
执行source /etc/profile,查看是否配置成功(java -version、hadoop version)
`hadoop checknative `查看,除ISA-L外都为true,安装成功。(耗时三天)
2.14、配置SSH免密登录
ssh-keygen -t rsa 三次回车。ll -a 显示隐藏目录,cd .ssh进入 ll,其中id rsa是私钥,id rsa.public是公钥,将公钥拷贝给要登录的服务器。
ssh-copy-id hadoop101,yes,输入密码,此时文件夹中多了一个authorized keys,存储所有经过认证的可以登陆我的公钥,在登录过程中authorized keys和id rsa进行配对比较。ssh-copy-id hadoop102,ssh-copy-id hadoop103,同上面操作。此时,101可以和102,103进行免密登录,但是103,102不可以和101进行免密登录,将id rsa发送给102,103即可实现免密登录
2.15、编写群发脚本
### 在/home/hike目录下创建xsync文件
cd /home/atguigu
vim xsync
2.15.1、在该文件中编写如下代码
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
  echo Not Enough Arguement!
  exit;
fi
#2. 遍历集群所有机器
for host in hadoop101 hadoop102 hadoop103
do
  echo ====================  $host  ====================
  #3. 遍历所有目录,挨个发送
  for file in $@
  do
    #4 判断文件是否存在
    if [ -e $file ]
    then
      #5. 获取父目录
      pdir=$(cd -P $(dirname $file); pwd)
      #6. 获取当前文件的名称
      fname=$(basename $file)
      ssh $host "mkdir -p $pdir"
      rsync -av $pdir/$fname $host:$pdir
    else
      echo $file does not exists!
    fi
  done
done
2.15.2、修改脚本 xsync 具有执行权限
chmod +x xsync
2.15.3、将脚本移动到/bin中,以便全局调用
sudo mv xsync /bin/
2.15.4、测试脚本
进入根目录,执行xsync .ssh 分发给所有机器,发送成功即可代表脚本没有错误,并且可以实现三台机器的免密登录。
2.16、分发jdk
xsync jdk1.8.0_212/_
2.17、 分发hadoop
xsync hadoop-3.1.3/
2.18、 分发环境变量
sudo xsync /etc/profile.d/my_env.sh_
在当前全部窗口输入java -version  hadoop version查看三台机器是否正确回应
小结:完成以上配置,集群搭建的前期准备已经全部完成!
#3集群布置
3.1、 集群规划
一台 NN 2NN RM
三台 DN  DN  DN
三台 NM  NM  NM  总计六台机器(从机的DN和NN混搭)
其中第一列为一台机器主从混搭,101搭建NN,103搭建2NN,102搭建RM
3.2、 修改配置文件
cd /opt/module/hadoop-3.1.3/etc/hadoop/
3.2.1、配置core-site.xml
vim core-site.xml 添加
<configuration>
    <!-- 将NN放到hadoop01 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop101:8020</value>
    </property>
    <!-- hadoop的数据存放路径 -->
    <property>
        <name>hadoop.data.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>
    <!--兼容性hive配置  -->
    <property>
        <name>hadoop.proxyuser.atguigu.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.atguigu.groups</name>
        <value>*</value>
    </property>
</configuration>
3.2.2、 配置hdfs-site.xml
vim hdfs-site.xml  
<!-- NN的数据存放路径 -->
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file://${hadoop.data.dir}/name</value>
  </property>
   <!-- DN的数据存放路径 -->
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file://${hadoop.data.dir}/data</value>
  </property>
   <!-- 2NN的数据存放路径 -->
    <property>
    <name>dfs.namenode.checkpoint.dir</name>
    <value>file://${hadoop.data.dir}/namesecondary</value>
  </property>
   <!-- 兼容性hive配置 -->
    <property>
    <name>dfs.client.datanode-restart.timeout</name>
    <value>30</value>
  </property>
   <!-- 配置2NN地址 -->
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop103:9868</value>
  </property>
3.2.3、 配置yarn-site.xml
vim yarn-site.xml     
<!-- 告诉机器mapreduce如何获取数据 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
     <!-- 配置RM地址 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop102</value>
    </property>
     <!-- 配置一些环境变量 -->
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
         <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
3.2.4、 MapReduce配置文件
vim mapred-site.xml
<!-- 告诉maperreduce跑在yarn上 -->
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
3.2.5、 配置workers
vim workers 配置所有从机
删除所有内容,添加
hadoop101
hadoop102
hadoop103
3.2.6、 将配置发送到其他机器
cd ..
xsync hadoop
查看是否将配置好的5个文件发送成功。
如果成功,hadoop的配置工作已经全部成功,下一步就可以启动集群了!
4、 集群启动
hdfs在启动时需要做一步格式化操作,在配置NN的节点上进行(101)
[hike@hadoop101 hadoop-3.1.3]$ #hdfs namenode -format
出现SHUTDOWN_MSG: Shutting down NameNode at hadoop101/10.84.126.2_,代表格式化完成。
4.1、 群起集群
在101:start-dfs.sh
在102:start-yarn.sh
在下面窗口输入jps,查看101中dn,nn,nm,102中rm,dn,nm,103中2nn,dn,nm都已经启动,自此集群已经启动。
4.2、配置历史服务器
MapReduce将数据历史汇集起来,在mapred-site.xml中添加两条属性
关闭集群(101):stop-dfs.sh
102  stop-yarn.sh
cd /opt/module/hadoop-3.1.3/etc/hadoop/
vim mapred-site.xml 
添加内容:
<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop101:10020</value>
</property>

<!-- 历史服务器web端地址 -->配置在那台机器上都可以
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop101:19888</value>
</property>
4.3、配置日志聚集
yarn将所有节点的日志收集到hdfs上能够方便程序人员的观看,如果程序出了问题,可以通过看日志解决。
vim yarn-site.xml
添加内容:
<!-- 开启日志聚集功能 -->
 <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
<!-- 日志所在服务器 -->
    <property>
        <name>yarn.log.server.url</name>
        <value>http://hadoop101:19888/jobhistory/logs</value>
    </property>
<!-- 日志保存一星期 -->
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
</property>
最好和历史服务器在一个节点上。
所有的配置都已经结束!
 cd ..
xsync hadoop/   将配置信息再发送给其他机器。
启动集群,开启历史日志服务器
mapred --daemon start historyserver
jps查看所有节点是否正常运行
到此为止,集群搭建完成。


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OneTenTwo76

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值