大数据开发系列(一)----Hadoop集群环境配置

本文详细指导如何在单一服务器hadoop101上配置IP、主机名,并分发配置到hadoop102和hadoop103。涉及JDK解压、环境变量设置、防火墙管理、SSH授权、Hadoop配置文件修改、集群初始化与问题解决。
摘要由CSDN通过智能技术生成

配置成功,jps显示如下:
                                     HDFS                                                    YARN

hadoop101             NameNode+DataNode                            NodeManager

hadoop102             DataNode+SecondaryNameNode          NodeManager

hadoop103             DataNode                                           NodeManager+ResourceManager

虚拟机中的子网地址为:192.168.25.0
根据虚拟机中的子网地址,修改服务器hadoop101的IP地址,可以为192.168.25.x(x可以是0-254任意一个数字)
只对主服务器hadoop101进行设置、配置(目前就只有1台服务器hadoop101):
一、IP修改
1:
hadoop101  IP修改:
vi    /etc/sysconfig/network-scripts/ifcfg-ens33

修改  BOOTPROTO="static"
添加:
IPADDR=192.168.25.101
GATEWAY=192.168.25.2
NDS1=192.168.25.2
DNS2=8.8.8.8
2主机名称修改:
vi   /etc/hostname
添加 hadoop101

3:
vi   /etc/hosts
添加
192.168.25.101   hadoop101
192.168.25.102   hadoop102
192.168.25.103   hadoop103

4:
重启
service network restart

5、重新启动服务器,命令:    reboot

6.在win10中,在路径C:\Windows\System32\drivers\etc\hosts,在hosts文件中添加:
192.168.25.101   hadoop101
192.168.25.102   hadoop102
192.168.25.103   hadoop103

这时可以打开命令提示符窗口执行以下命令:

ipconfig /displaydns

//命令让该记录不用重启而立即生效

ipconfig /flushdns

二、jdk 解压
将文件  jdk-8u301-linux-x64.tar.gz和hadoop-3.1.2.tar.gz上传到/opt/software_2021(software_2021文件夹是自己建立的)
jdk-8u301-linux-x64.tar.gz和hadoop-3.1.2.tar.gz解压到文件夹 /usr/lib/JDK_2021(JDK_2021文件夹是自己建立的)
读写权限:
chmod 777 software_2021
chmod 777 JDK_2021

解压:
tar -xzvf   jdk-8u301-linux-x64.tar.gz  -C /usr/lib/JDK_2021

tar -xzvf   hadoop-3.1.2.tar.gz      -C  /usr/lib/JDK_2021
1、配置环境变量:
vi  /etc/profile
(2)编辑模式下,在结尾或开头添加如下:
#JAVA_HOME 
export   JAVA_HOME=/usr/lib/JDK_2021/jdk1.8.0_301
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

#HADOOP_HOME 
export  HADOOP_HOME=/usr/lib/JDK_2021/hadoop-3.1.2
export  PATH=$PATH:$HADOOP_HOME/bin 
export  PATH=$PATH:$HADOOP_HOME/sbin 

#hadoop格式化异常处理代码
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

2、更新
source /etc/profile

hadoop version
java   -version
pwd 显示当前你在什么位置 

(1)bin 目录:存放对 Hadoop 相关服务(hdfs,yarn,mapred)进行操作的脚本
(2)etc 目录:Hadoop 的配置文件目录,存放 Hadoop 的配置文件
(3)lib 目录:存放 Hadoop 的本地库(对数据进行压缩解压缩功能)
(4)sbin 目录:存放启动或停止 Hadoop 相关服务的脚本
(5)share 目录:存放 Hadoop 的依赖 jar 包、文档、和官方案例


三、关闭防火墙
关闭防火墙命令
systemctl stop firewalld.service
设置主节点上禁止开机启动防火墙
systemctl disable firewalld.service

查看防火墙状态
sudo firewall-cmd --state 

四、SSH安装授权
ssh 安装  授权
https://www.jb51.net/article/137194.htm
CentOS 默认已安装了 SSH client、SSH server,可打开终端执行如下命令进行检验:
rpm -qa | grep ssh
安装ssh:
yum install openssh-clients

yum install openssh-server

命令测试一下 SSH 是否可用:
ssh localhost

进入ssh命令    
cd    /root/.ssh

生成公匙的命令  ssh-keygen -t     rsa
显示:     私匙  id_rsa       公匙  id_rsa.pub 

新建   vi   authorized_keys
# 加入授权
cat id_rsa.pub >> authorized_keys 
# 修改文件权限
chmod   600    ./authorized_keys 

登录ssh命令  (不需要密码则成功)
ssh localhost
退出ssh命令
exit

五、CentOS 7 + Hadoop3.1.2 搭建分布式集群hadoop配置:  
参考 https://www.cnblogs.com/thousfeet/p/8618696.html

修改文件:
1:hadoop-env.sh ——>jdk
2:yarn-env.sh ——>jdk
3:core-site.xml
4:hdfs-site.xml
5:mapred-site.xml
6:yarn-site.xml


hadoop配置路径为  :     
1、core-site.xml文件配置:  vim   core-site.xml
vi     /usr/lib/JDK_2021/hadoop-3.1.2/etc/hadoop/core-site.xml

<configuration>
    <!--指定HDFS Master(namenode)的通信地址,默认端口 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop101:8020</value>
    </property>
    <property>
    <!--指定hadoop运行时产生文件的存储路径 -->
        <name>hadoop.tmp.dir</name>
        <value>/usr/lib/JDK_2021/hadoop-3.1.2/data</value>
    </property>
</configuration>


2、hdfs-site.xml文件配置:vim   hdfs-site.xml
vi     /usr/lib/JDK_2021/hadoop-3.1.2/etc/hadoop/hdfs-site.xml

<configuration>
    <!-- nn  web端访问地址 -->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop101:9870</value>
    </property>
    <!-- 2nn  web端访问地址 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop103:9868</value>
    </property>
</configuration>

3、mapred-site.xml文件配置:vim   mapred-site.xml
vi     /usr/lib/JDK_2021/hadoop-3.1.2/etc/hadoop/mapred-site.xml

<configuration>
        <property>
                 <!--指定mapreduce运行在Yarn上 -->
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
</configuration>


4、yarn-site.xml文件配置:vim     yarn-site.xml
vi     /usr/lib/JDK_2021/hadoop-3.1.2/etc/hadoop/yarn-site.xml

<configuration>
    <!--NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!--指定ResourceManger的地址 -->
    <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>
</configuration>


5、修改hadoop-env.sh,配置java jdk路径,大概在27行配置,如下:
vi     /usr/lib/JDK_2021/hadoop-3.1.2/etc/hadoop/hadoop-env.sh

添加如下代码: 
export   JAVA_HOME=/usr/lib/JDK_2021/jdk1.8.0_301
export  HADOOP_HOME=/usr/lib/JDK_2021/hadoop-3.1.2

6、yarn-env.sh中
vi     /usr/lib/JDK_2021/hadoop-3.1.2/etc/hadoop/yarn-env.sh

添加如下代码:   
export   JAVA_HOME=/usr/lib/JDK_2021/jdk1.8.0_301


  
7、配置workers ,路径是:cd   /usr/lib/JDK_2021/hadoop-3.1.2/etc/hadoop
vi   /usr/lib/JDK_2021/hadoop-3.1.2/etc/hadoop/workers
配置内容为:
hadoop101
hadoop102
hadoop103

xiaoye11
xiaoye12
xiaoye13
路径:
/usr/lib/JDK_2021/hadoop-3.1.2
/usr/lib/JDK_2021/hadoop-3.1.2/etc/hadoop


六、利用服务器hadoop101,分别克隆hadoop102,hadoop103

参考 https://www.cnblogs.com/frankdeng/p/9027037.html
       https://blog.csdn.net/weixin_43160263/article/details/88074318
hadoop102,hadoop103克隆成功以后,需要对他们的IP和主机名称进行修改:
(1) hadoop102的  IP修改
     1:
      IP的修改:
    vi    /etc/sysconfig/network-scripts/ifcfg-ens33
    修改  IPADDR=192.168.25.102
  
    2、主机名称修改:
    vi   /etc/hostname
    修改为  hadoop102
   
   3、重启网络命令
   service network restart

   4、重启hadoop102,
     命令:  reboot
   

(2) hadoop103的  IP修改
     1:
      IP的修改:
      vi    /etc/sysconfig/network-scripts/ifcfg-ens33
     修改  IPADDR=192.168.25.103
    2、主机名称修改:
    vi   /etc/hostname
    修改  hadoop102

    3、重启网络命令
   service network restart

    4、重启hadoop103,
     命令:  reboot

  *****这时就可以使用XShell对三台服务器hadoop101、hadoop102,hadoop103进行远程操控(方便),也可以直接在各自
系统中操作。

七、保证hadoop101、hadoop102,hadoop103三台同时都在线,给hadoop102,hadoop103 SSH授权
      (1)、对hadoop102进行操作:
    1、进入ssh命令 :          cd ~/.ssh/
    2、生成公匙的命令:      ssh-keygen -t     rsa
    3、加入授权命令:         cat id_rsa.pub >> authorized_keys 
    4、修改文件权限命令:  chmod 600    ./authorized_keys 

    (2)、对hadoop103进行操作:
    1、进入ssh命令 :          cd ~/.ssh/
    2、生成公匙的命令:      ssh-keygen -t     rsa
    3、加入授权命令:         cat id_rsa.pub >> authorized_keys 
    4、修改文件权限命令:  chmod 600    ./authorized_keys 
     
(3)、对hadoop102进行操作:
      1、进入ssh命令 :          cd ~/.ssh/
      2、执行命令: ssh-copy-id   hadoop101
                             ssh-copy-id   hadoop103

(4)、对hadoop103进行操作:
      1、进入ssh命令 :          cd ~/.ssh/
      2、执行命令: ssh-copy-id   hadoop101
                             ssh-copy-id   hadoop102

(5)、hadoop101、hadoop102,hadoop103相互之间即可ssh免密

****************如果服务器hadoop101在克隆hadoop102,hadoop103以后步骤五(hadoop配置文件)做了修改,则需要执行步骤八,步骤五没做修改,就不需要执行步骤八。

八、建立分发xsync脚本:
1、进入桌面路径为:vi    /usr/local/bin/xsync
  在usr/local/bin目录下面创建文件xsyn,内容如下:

#!/bin/bash
## 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
        echo no args...;
        exit;
fi
# 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
# 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
# 获取当前用户名称
user=`whoami`
# 循环
for((host=1; host<=3; host++)); do
        echo $pdir/$fname $user@hadoop10$host:$pdir
        echo ==================hadoop10$host==================
        rsync -rvl $pdir/$fname $user@hadoop10$host:$pdir
done
#备注:这里的ni对应自己主机名,需要做相应修改。另外,for循环中的host的边界值
1. xsync文件需要权限,执行命令  chmod   777    /usr/local/bin/xsync 

2、调用xsync脚本,将  hadoop101   的/usr/lib/JDK_2021/hadoop-3.1.2/etc/hadoop文件夹下面
hadoop-env.sh、yarn-env.sh 、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml已经修改的
配置文件分发给hadoop102、hadoop103服务器,在hadoop101中操作;
cd     /usr/lib/JDK_2021/hadoop-3.1.2/etc
1、进入/usr/lib/JDK_2021/hadoop-3.1.2/etc文件夹下,执行命令:xsync    hadoop/
2、即可分发成功


九、初始化集群:

进入cd   /usr/lib/JDK_2021/hadoop-3.1.2  
格式化namenode,       [root@xiaoye004 hadoop-3.1.2]#
1、命令:hdfs namenode -format


2、启动集群
命令:  cd    /usr/lib/JDK_2021/hadoop-3.1.2

hadoop101主机hadoop启动命令:sbin/start-dfs.sh

hadoop102主机hadoop启动命令:sbin/start-yarn.sh

hadoop101主机停止命令: sbin/stop-all.sh
hadoop102主机停止命令:sbin/stop-all.sh

启动页面
http://192.168.25.101:9870
http://192.168.25.102:8088


配置最终结果(配置成功),执行jps命令:
hadoop101(主):
[root@hadoop101 hadoop-3.1.2]# jps
4340 Jps
4232 NodeManager
3738 NameNode
3885 DataNode

hadoop102(从):
[root@hadoop102 hadoop-3.1.2]# jps
5362 Jps
4867 ResourceManager
5033 NodeManager
4767 DataNode

hadoop103(从):
[root@hadoop103 hadoop-3.1.2]# jps
3344 NodeManager
3489 Jps
3111 DataNode
3230 SecondaryNameNode


服务器参数:
路径:/usr/lib/JDK_2021/hadoop-3.1.2/data/dfs/data/current

异常解决:
两种解决ERROR: Attempting to operate on hdfs namenode as root的方法
https://www.cnblogs.com/nihilwater/p/13849396.html

******hadoop 异常处理1-4步:
1.停止进程
sbin/stop-all.sh


2.删除3台集群中hadoop-3.1.2文件夹中的data文件夹和logs文件夹

cd   /usr/lib/JDK_2021/hadoop-3.1.2
rm  -rf   data/     logs/


3、格式化namenode, [root@xiaoye004 hadoop-3.1.2]#
    命令:hdfs namenode -format

4、启动集群
命令:  cd    /usr/lib/JDK_2021/hadoop-3.1.2

hadoop101主机hadoop启动命令:sbin/start-dfs.sh

hadoop102主机hadoop启动命令:sbin/start-yarn.sh

hadoop101主机停止命令: sbin/stop-all.sh
hadoop102主机停止命令:sbin/stop-all.sh
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值