超详细的hadoop完全分布式安装及xsync等各个脚本

1.主机名修改

在完成虚拟机的创建后,进行主机名称修改:

#修改配置文件,将内容改为 master,保存退出
vi /etc/hostname  #将里面localhost删除进行改名

[root@host ~]$​ vi /etc/sysconfig/network     编辑,i 键插入
NETWORKING=yes
HOSTNAME=master                     修改为新名

:wq                             ESC 退出插入退出并保存
[root@bogon ~]$ reboot

​​2.永久关闭防火墙​

关闭防火墙,关闭防火墙开机自启:

#关闭防火墙
[root@hadoop100 ~]$ systemctl stop firewalld

#设置关闭防火墙开机自启
[root@hadoop100 ~]$ systemctl disable firewalld.service 

3.配置网络并测试

cd /etc/sysconfig/network-scripts/

vi  ifcfg-ens33
#这里说一下需要修改的位置:
#修改
BOOTPROTO=static #这里 dhcp 换成 static
ONBOOT=yes #将 no 换成 yes
#新增
IPADDR=192.168.222.171 #静态 IP
GATEWAY=192.168.222.2 #默认网关
NETMASK=255.255.255.0 #子网掩码DNS1=192.168.222.2#视实际情况而定,最好设置为网关
DNS2=8.8.8.8
保存退出后,重启网络服务,执行下面的命令 :
service network restart
#看到  Restarting network (via systemctl):                        [  OK  ] 为成功
关防火墙执行    systemctl stop firewalld
查看:ping www.baidu.com  看是否 ping 通

4.安装插件

(1)安装 epel-release

注:Extra Packages for Enterprise Linux 是为“红帽系”的操作系统提供额外的软件包,适用于 RHEL、CentOS 和 Scientific Linux。相当于是一个软件仓库,大多数 rpm 包在官方 repository 中是找不到的)

​[root@hadoop100 ~]$ yum install -y epel-release​​

(2)net-tool:工具包集合

​[root@hadoop100 ~]$ yum install -y net-tools​​

(3)vim:编辑器

​[root@hadoop100 ~]$ yum install -y vim​​

5.创建文件夹

​用于存放win传输来的tar安装包:

mkdir -p /opt/software​​

​将安装包进行解压到此目录:

mkdir -p /opt/module​​

6.配置 hosts 文件和 IP 地址映射

执行命令:vi /etc/hosts

7.进行虚拟机的克隆

克隆完成后,首先修改网络配置:

vi /etc/sysconfig/network-scripts/ifcfg-ens33

需要修改位置 IPADDR 和 DNS1 两个位置,修改完成后生效:

 service network restart

记得关闭防火墙

systemctl stop firewalld

最后测试 ping www.baidu.com。

再进行虚拟机名称的修改:vi /etc/hostname

之后 reboot 重启虚拟机。在此完成后即可再 finalshell 或者Xshell里面进行连接。

8.时间同步 NTP

(1)同步主机时间

安装 NTP 包(三个机器都要安装):

yum install -y ntp

之后在 bigdata2023master 做为 ntp 服务器,只修改此服务器 ntp 配置文件:

vi /etc/ntp.conf

末尾追加:

server 127.0.0.1

fudge 127.0.0.1 stratum 10

重启时间服务:

/bin/systemctl restart ntpd.service

稍等一会在 slave1 和 slave2 上执行: ntpdate bigdata2023master 出现如下图所示即表示成功。

若出现如下图错误:​

您收到此错误消息的原因是由于 xntpd 已经绑定到了该 Socket。运行 ntpdate 时,它会首先进行广播,然后侦听端口 123。如果 xntpd 正在运行,而有一个进程已经在侦听该端口了,则会使 ntpdate 无法在上面运行。运行下列命令,即可找出 xntpd 的 PID

按照以下绿色标记顺序快速执行

[root@SZDX-DNS-1 bin]# ps -ef|grep xntpd

root 124185 6192 0 15:49 pts/1 00:00:00 grep xntpd

可惜没有找到 pid。

使用 lsof –i:123

没有 lsof 命令的话:yum install -y lsof

lsof -i:123

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

ntpd 124171 ntp 16u IPv4 420557 0t0 UDP *:ntp

ntpd 124171 ntp 17u IPv6 420558 0t0 UDP *:ntp

[root@spark1 bin]# kill -9 12417

[root@spark11 bin]# ntpdate 192.168.100.120

13 Apr 09:08:36 ntpdate[124200]: step time server 192.168.100.120 offset -24096.422190 sec

[root@spark1 bin]# date

清除 (Kill) 该进程,然后尝试再次与 ntp 服务器进行同步。此时您不应该收到此错误消息。

请注意,如果您尝试与之同步的服务器没有运行 xntpd,则会收到下列错误消息:

ntpdate[12573]: no server suitable for synchronization found

出现这种情况的原因是,如果您想使用另一个服务器的时间,该服务器必须已经进行了自身同步。

(2)同步网络时间

如果不同步 master 的话,可以同步到网络时间 ntpdate -u cn.pool.ntp.org

9.SSH 免密登录

1.生成ssh包(所有机器都要执行):ssh-keygen -t dsa

2.拷贝文件(在除去master机器上的其他机器上)

cd /root/.ssh
ls
在这个目录下执行

scp id_dsa.pub root@bigdata2023master:/root/.ssh/bigdata2023slave1.pub

scp id_dsa.pub root@bigdata2023master:/root/.ssh/bigdata2023slave2.pub

3.合并文件(在master机器上)

cat id_dsa.pub bigdata2023slave1.pub bigdata2023slave2.pub >>authorized_keys

4.从master分发公钥

scp authorized_keys root@bigdata2023slave1:~/.ssh

scp authorized_keys root@bigdata2023slave2:~/.ssh

5.进行测试

在master上 ssh bigdata2023slave1 和 ssh bigdata2023slave2

在每台机器上对其他机器测试 ssh 【机器名】

6.退出登录

可以用exit退出远程登录

10.xsync脚本

(1)rsync 远程同步工具

rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

rsync和scp区别:用rsync做文件的复制要比scp的速度快,

​rsync只对差异文件做更新,scp是把所有文件都复制过去​​​。

安装rsync(三台机器都要安装):

yum install rsync -y​​

(2)新建文件夹放置脚本

在# /home/leeroot/bin 目录下创建xsync文件(一定要在bin目录下!!)

mkdir  -p /home/leeroot/bin

(3)创建xsync

​
cd /home/leeroot/bin
在/homeleeroot/bin 目录下创建xsync文件: vi xsync

 xsync的核心代码内容如下,在新建的xsync文件下输入:

#!/bin/bash
1.判断参数个数if [ $ -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi
#2.遍历集群所有机器   请改成你自己的主机映射
for host in host1 host2 host3
do
    echo =============== $host ==================
    #3.遍历所有目录,挨个发送
    for file in $@
    do
        #4.判断文件是否存在
        if [ -e $file ]
            then
		    #5.获取父目录
            pdir=(cd−P(dirname $file); pwd)
		    fname=(basenamefile)
		    # 创建文件夹和传输文件。请改成你自己的端口号
		    ssh -p 32200 host"mkdir−ppdir"
		    rsync -av -e 'ssh -p 32200' pdir/fname host:pdir
	    else
		    echo $file does not exists!
	    fi
    done
done

再添加权限 :

chmod 777 xsync

并添加全局执行,创建新文件夹,写入所有环境变量的配置

vi /etc/profile

将以下内容添加进环境变量,让创建的xsync脚本能全局执行:

#PATH
export PATH=$PATH:/home/leeroot/bin

环境变量生效:

source /etc/profile

即可完成

(4)测试xsync

在根目录创建a.txt,再进行分发:xsync a.txt

然后再其他服务器的根目录查看是否有a.txt文件。

11.安装JDK

(1)上传jdk安装包

cd /opt/software     在此目录上传jdk安装包;

在 Linux 系统下的 opt 目录中查看软件包是否导入成功在:ls进行查看。

看到如下结果:

jdk-8u321-linux-x64.tar.gz

(2)解压 JDK 到/opt/module 目录下

tar -zxvf jdk-8u321-linux-x64.tar.gz -C /opt/module/

(3)配置 JDK 环境变量

(1)新建/etc/profile.d/my_env.sh 文件:

vim /etc/profile.d/my_env.sh

添加如下内容

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_321
export PATH=$PATH:$JAVA_HOME/bin

(2)生效环境变量:

 source /etc/profile

(4)测试 JDK 是否安装成功

#输入java -version检验
[root@bigdata2023master ~]$ java -version

如果能看到以下结果,则代表 Java 安装成功。

java version "1.8.0_321"

(5)分发安装好的jdk

注意其他机器也需要安装JDK,此时比较简单。

在已经安装jdk的机器上进行分发:

scp -r /opt/module/jdk1.8.0_321/ root@bigdata2023slave1:/opt/module
scp -r /opt/module/jdk1.8.0_321/ root@bigdata2023slave2:/opt/module

分发环境变量:

xsync /etc/profile.d/my_env.sh

最后在其他机器上生效一下环境变量:source /etc/profile

其他机器检测是否安装成功:java -version

12.安装hadoop

(1)解压Hadoop并指定目录

[root@bigdata2023master ~]$ cd /opt/software/
[root@bigdata2023master software]$ tar -zxvf hadoop-3.2.2.tar.gz -C /opt/module/

(2)配置Hadoop环境变量

[root@bigdata2023master ~]$  vim /etc/profile.d/my_env.sh

在末尾添加

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.2.2
export PATH=PATH:HADOOP_HOME/bin
export PATH=PATH:HADOOP_HOME/sbin

在hadoop-3.1.0启动时hadoop集群如果出现如下错误

[root@bigdata2023master sbin]#   start-all.sh
Starting namenodes on [hadoop]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [hadoop]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation
在环境变量中添加上如下配置:

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


(3)使修改后的文件生效

[root@bigdata2023master ~]$ source /etc/profile


(4)测试Hadoop是否安装成功

[root@bigdata2023master ~]$ hadoop version

​​Hadoop 3.2.2
Source code repository
Compiled by ljc1
Compiled with protoc 2.5.0
From source with checksum ec785077c385118ac91aadde5ec9799
This command was run using /opt/module/hadoop-3.2.2/share/hadoop/common/hadoop-common-3.2.2.jar​​​​

(5)分发安装好的Hadoop

注意其他机器也需要安装hadoop,此时比较简单。

在已经安装jdk的机器上进行分发:

scp -r /opt/module/hadoop-3.2.2/ root@bigdata2023slave1:/opt/module
scp -r /opt/module/hadoop-3.2.2/ root@bigdata2023slave2:/opt/module

分发环境变量:

xsync /etc/profile.d/my_env.sh

最后在其他机器上生效一下环境变量:source /etc/profile

其他机器检测是否安装成功:hadoop version

13.hadoop完全分布式配置

1.进入hadoop目录

[root@bigdata2023master ~]$ cd /opt/module/hadoop-3.2.2/etc/hadoop/

2.配置主要文件

此时注意,进入此目录后,将要配置的core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml都进行手动删除,再通过上传文件的形式快速配置好所需的文件,在上传前将需要的配置修改好,然后直接上传即可。

配置core-site.xml

[root@bigdata2023master hadoop]$ vim core-site.xml

在<configuration>与</configuration>之间添加内容:

<configuration>
	<!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://bigdata2023master:8020</value>
    </property>

	<!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.2.2/data</value>
    </property>

	<!-- 配置HDFS网页登录使用的静态用户为root -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>root</value>
    </property>
</configuration>

配置hdfs-site.xml

[root@bigdata2023master hadoop]$ vim hdfs-site.xml
<configuration>
	<!-- nn web端访问地址-->
	<property>
        <name>dfs.namenode.http-address</name>
        <value>bigdata2023master:9870</value>
    </property>
	<!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>bigdata2023slave2:9868</value>
    </property>
</configuration>

配置yarn-site.xml

[root@bigdata2023master hadoop]$ vim yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->

	<!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

	<!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>bigdata2023slave1</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>

<!-- 开启日志聚集功能 -->
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>

	<!-- 设置日志聚集服务器地址 -->
    <property>  
        <name>yarn.log.server.url</name>  
        <value>http://bigdata2023master:19888/jobhistory/logs</value>
    </property>

	<!-- 设置日志保留时间为14天 -->
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>1209600</value>
    </property>

配置mapred-site.xml

[root@bigdata2023master hadoop]$ vim mapred-site.xml
<configuration>
	<!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
	<!-- 历史服务器端地址 -->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>bigdata2023master:10020</value>
    </property>
	<!-- 历史服务器web端地址 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>bigdata2023master:19888</value>
    </property>
</configuration>

3.同步所有节点配置文件

xsync /opt/module/hadoop-3.2.2/etc/hadoop

4.查看配置文件分发情况

分别在bigdata2023slave1和bigdata2023slave2上执行:

cat /opt/module/hadoop-3.2.2/etc/hadoop/core-site.xml

配置works

[root@bigdata2023master hadoop]$ vim /opt/module/hadoop-3.2.2/etc/hadoop/workers

清除原有内容,写入所有集群机器名称:

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

bigdata2023master
bigdata2023slave1
bigdata2023slave2

同步所有节点配置文件

[root@bigdata2023master hadoop]$ xsync /opt/module/hadoop-3.2.2/etc/hadoop

14.启动集群并测试

(1)格式化 NameNode

如果集群是第一次启动,需要在(主节点)bigdata2023master 节点格式化 NameNode(注意:格式化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停止 namenode 和 datanode 进程,并且要在cd /opt/module/hadoop-3.2.2/目录下删除所有机器的 data 和 logs 目录,然后再进行格式化。)

[root@bigdata2023master hadoop-3.2.2]$ hdfs namenode -format

(2)启动 HDFS

[root@bigdata2023master hadoop-3.2.2]$ sbin/start-dfs.sh

(3)在配置了 ResourceManager 的节点(hadoop103)启动 YARN

[root@bigdata2023master hadoop-3.2.2]$ sbin/start-yarn.sh

(4)Web 端查看 HDFS 的 NameNode

(a)浏览器中输入:http://bigdata2023master:9870 或者192.168.222.200:9870

(b)查看 HDFS 上存储的数据信息

(5)Web 端查看 YARN 的 ResourceManager

(a)浏览器中输入:http://bigdata2023slave1:8088 或者192.168.222.201:8088

(b)查看 YARN 上运行的 Job 信息

(6)上传大文件测试

hadoop fs -put /opt/software/jdk-8u321-linux-x64.tar.gz /

在网页上查看结果:

显示如上图即可表示安装成功,如若在测试可以进行mapreduce的数单词测试。

15.常用端口说明

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值