• 超详细的hadoop完全分布式安装及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

    之间添加内容:

    1. <configuration>
    2. <property>
    3. <name>fs.defaultFSname>
    4. <value>hdfs://bigdata2023master:8020value>
    5. property>
    6. <property>
    7. <name>hadoop.tmp.dirname>
    8. <value>/opt/module/hadoop-3.2.2/datavalue>
    9. property>
    10. <property>
    11. <name>hadoop.http.staticuser.username>
    12. <value>rootvalue>
    13. property>
    14. configuration>

    配置hdfs-site.xml

    [root@bigdata2023master hadoop]$ vim hdfs-site.xml
    1. <configuration>
    2. <property>
    3. <name>dfs.namenode.http-addressname>
    4. <value>bigdata2023master:9870value>
    5. property>
    6. <property>
    7. <name>dfs.namenode.secondary.http-addressname>
    8. <value>bigdata2023slave2:9868value>
    9. property>
    10. configuration>

    配置yarn-site.xml

    [root@bigdata2023master hadoop]$ vim yarn-site.xml
    1. <configuration>
    2. <property>
    3. <name>yarn.nodemanager.aux-servicesname>
    4. <value>mapreduce_shufflevalue>
    5. property>
    6. <property>
    7. <name>yarn.resourcemanager.hostnamename>
    8. <value>bigdata2023slave1value>
    9. property>
    10. <property>
    11. <name>yarn.nodemanager.env-whitelistname>
    12. <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOMEvalue>
    13. property>
    14. <property>
    15. <name>yarn.log-aggregation-enablename>
    16. <value>truevalue>
    17. property>
    18. <property>
    19. <name>yarn.log.server.urlname>
    20. <value>http://bigdata2023master:19888/jobhistory/logsvalue>
    21. property>
    22. <property>
    23. <name>yarn.log-aggregation.retain-secondsname>
    24. <value>1209600value>
    25. property>

    配置mapred-site.xml

    [root@bigdata2023master hadoop]$ vim mapred-site.xml
    1. <configuration>
    2. <property>
    3. <name>mapreduce.framework.namename>
    4. <value>yarnvalue>
    5. property>
    6. <property>
    7. <name>mapreduce.jobhistory.addressname>
    8. <value>bigdata2023master:10020value>
    9. property>
    10. <property>
    11. <name>mapreduce.jobhistory.webapp.addressname>
    12. <value>bigdata2023master:19888value>
    13. property>
    14. 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.常用端口说明

  • 相关阅读:
    如何写出优雅的代码?
    【论文笔记_对比学习_2021】CONTRASTIVE LEARNING WITH HARD NEGATIVE SAMPLES
    基于图卷积神经网络的微博疫情情感分析
    北漂七年拿过阿里、腾讯、华为offer的资深架构师,分享经验总结
    什么,这年头还有人不知道404
    袋鼠云数栈UI5.0设计实战|B端表单这样设计,不仅美观还提效
    我为什么选择Wiki.js记笔记?
    clickhouse单节点以及集群的安装
    Allegro如何输出STP文件操作指导
    应用层总结(未完待续 )
  • 原文地址:https://blog.csdn.net/weixin_64497286/article/details/132621410