当前位置:   article > 正文

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

安装xsync

1.主机名修改

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

  1. #修改配置文件,将内容改为 master,保存退出
  2. vi /etc/hostname #将里面localhost删除进行改名
  3. [root@host ~]$​ vi /etc/sysconfig/network 编辑,i 键插入
  4. NETWORKING=yes
  5. HOSTNAME=master 修改为新名
  6. :wq ESC 退出插入退出并保存
  7. [root@bogon ~]$ reboot

​​2.永久关闭防火墙

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

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

3.配置网络并测试

  1. cd /etc/sysconfig/network-scripts/
  2. vi ifcfg-ens33
  3. #这里说一下需要修改的位置:
  4. #修改
  5. BOOTPROTO=static #这里 dhcp 换成 static
  6. ONBOOT=yes #将 no 换成 yes
  7. #新增
  8. IPADDR=192.168.222.171 #静态 IP
  9. GATEWAY=192.168.222.2 #默认网关
  10. NETMASK=255.255.255.0 #子网掩码DNS1=192.168.222.2#视实际情况而定,最好设置为网关
  11. DNS2=8.8.8.8
  12. 保存退出后,重启网络服务,执行下面的命令 :
  13. service network restart
  14. #看到 Restarting network (via systemctl): [ OK ] 为成功
  15. 关防火墙执行 systemctl stop firewalld
  16. 查看: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

末尾追加:

  1. server 127.0.0.1
  2. 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. 1.生成ssh包(所有机器都要执行):ssh-keygen -t dsa
  2. 2.拷贝文件(在除去master机器上的其他机器上)
  3. cd /root/.ssh
  4. ls
  5. 在这个目录下执行
  6. scp id_dsa.pub root@bigdata2023master:/root/.ssh/bigdata2023slave1.pub
  7. scp id_dsa.pub root@bigdata2023master:/root/.ssh/bigdata2023slave2.pub
  8. 3.合并文件(在master机器上)
  9. cat id_dsa.pub bigdata2023slave1.pub bigdata2023slave2.pub >>authorized_keys
  10. 4.从master分发公钥
  11. scp authorized_keys root@bigdata2023slave1:~/.ssh
  12. scp authorized_keys root@bigdata2023slave2:~/.ssh
  13. 5.进行测试
  14. 在master上 ssh bigdata2023slave1 和 ssh bigdata2023slave2
  15. 在每台机器上对其他机器测试 ssh 【机器名】
  16. 6.退出登录
  17. 可以用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

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

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

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

再添加权限 :

chmod 777 xsync

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

vi /etc/profile

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

  1. #PATH
  2. 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

添加如下内容

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

(2)生效环境变量:

 source /etc/profile

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

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

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

java version "1.8.0_321"

(5)分发安装好的jdk

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

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

  1. scp -r /opt/module/jdk1.8.0_321/ root@bigdata2023slave1:/opt/module
  2. 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并指定目录

  1. [root@bigdata2023master ~]$ cd /opt/software/
  2. [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

在末尾添加

  1. #HADOOP_HOME
  2. export HADOOP_HOME=/opt/module/hadoop-3.2.2
  3. export PATH=PATH:HADOOP_HOME/bin
  4. 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
在环境变量中添加上如下配置:

  1. export HDFS_NAMENODE_USER=root
  2. export HDFS_DATANODE_USER=root
  3. export HDFS_SECONDARYNAMENODE_USER=root
  4. export YARN_RESOURCEMANAGER_USER=root
  5. 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的机器上进行分发:

  1. scp -r /opt/module/hadoop-3.2.2/ root@bigdata2023slave1:/opt/module
  2. 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>之间添加内容:

  1. <configuration>
  2. <!-- 指定NameNode的地址 -->
  3. <property>
  4. <name>fs.defaultFS</name>
  5. <value>hdfs://bigdata2023master:8020</value>
  6. </property>
  7. <!-- 指定hadoop数据的存储目录 -->
  8. <property>
  9. <name>hadoop.tmp.dir</name>
  10. <value>/opt/module/hadoop-3.2.2/data</value>
  11. </property>
  12. <!-- 配置HDFS网页登录使用的静态用户为root -->
  13. <property>
  14. <name>hadoop.http.staticuser.user</name>
  15. <value>root</value>
  16. </property>
  17. </configuration>

配置hdfs-site.xml

[root@bigdata2023master hadoop]$ vim hdfs-site.xml
  1. <configuration>
  2. <!-- nn web端访问地址-->
  3. <property>
  4. <name>dfs.namenode.http-address</name>
  5. <value>bigdata2023master:9870</value>
  6. </property>
  7. <!-- 2nn web端访问地址-->
  8. <property>
  9. <name>dfs.namenode.secondary.http-address</name>
  10. <value>bigdata2023slave2:9868</value>
  11. </property>
  12. </configuration>

配置yarn-site.xml

[root@bigdata2023master hadoop]$ vim yarn-site.xml
  1. <configuration>
  2. <!-- Site specific YARN configuration properties -->
  3. <!-- 指定MR走shuffle -->
  4. <property>
  5. <name>yarn.nodemanager.aux-services</name>
  6. <value>mapreduce_shuffle</value>
  7. </property>
  8. <!-- 指定ResourceManager的地址-->
  9. <property>
  10. <name>yarn.resourcemanager.hostname</name>
  11. <value>bigdata2023slave1</value>
  12. </property>
  13. <!-- 环境变量的继承 -->
  14. <property>
  15. <name>yarn.nodemanager.env-whitelist</name>
  16. <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
  17. </property>
  18. <!-- 开启日志聚集功能 -->
  19. <property>
  20. <name>yarn.log-aggregation-enable</name>
  21. <value>true</value>
  22. </property>
  23. <!-- 设置日志聚集服务器地址 -->
  24. <property>
  25. <name>yarn.log.server.url</name>
  26. <value>http://bigdata2023master:19888/jobhistory/logs</value>
  27. </property>
  28. <!-- 设置日志保留时间为14天 -->
  29. <property>
  30. <name>yarn.log-aggregation.retain-seconds</name>
  31. <value>1209600</value>
  32. </property>

配置mapred-site.xml

[root@bigdata2023master hadoop]$ vim mapred-site.xml
  1. <configuration>
  2. <!-- 指定MapReduce程序运行在Yarn上 -->
  3. <property>
  4. <name>mapreduce.framework.name</name>
  5. <value>yarn</value>
  6. </property>
  7. <!-- 历史服务器端地址 -->
  8. <property>
  9. <name>mapreduce.jobhistory.address</name>
  10. <value>bigdata2023master:10020</value>
  11. </property>
  12. <!-- 历史服务器web端地址 -->
  13. <property>
  14. <name>mapreduce.jobhistory.webapp.address</name>
  15. <value>bigdata2023master:19888</value>
  16. </property>
  17. </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

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

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

  1. bigdata2023master
  2. bigdata2023slave1
  3. 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.常用端口说明

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号