Hadoop版本演变、分布式集群搭建

立山  金牌会员 | 2024-12-9 01:01:36 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 904|帖子 904|积分 2712

Hadoop版本演变历史

Hadoop发行版非常的多,有华为发行版、Intel发行版、Cloudera Hadoop(CDH)、Hortonworks Hadoop(HDP),这些发行版都是基于Apache Hadoop衍生出来的。
现在Hadoop经历了三个大的版本。

hadoop1.x:HDFS+MapReduce
hadoop2.x:HDFS+YARN+MapReduce
hadoop3.x:HDFS+YARN+MapReduce

在Hadoop1.x中,分布式盘算和资源管理都是MapReduce负责的,从Hadoop2.x开始把资源管理单独拆分出来了,YARN是一个公共的资源管理平台,在它上面不仅仅可以跑MapReduce程序,还可以跑很多其他的程序,例如:Spark、Flink等盘算框架都是支持在YARN上面执行的,而且在现实工作中也都是在YARN上面执行,只要程序满足YARN的规则即可。
Hadoop3.x的架构并没有发生什么变化,但是它在其他细节方面做了很多优化,常见的包括:


  • 最低Java版本要求从Java7变为Java8;
  • 在Hadoop 3中,HDFS支持纠删码,纠删码是一种比副本存储更节省存储空间的数据持久化存储方法,使用这种方法,雷同容错的环境下可以比之前节省一半的存储空间
    HDFS Erasure Coding
  • Hadoop 2中的HDFS最多支持两个NameNode,一主一备,而Hadoop 3中的HDFS支持多个NameNode,一主多备;
    HDFS High Availability Using
  • MapReduce使命级本地优化,MapReduce添加了映射输出网络器的本地化实现的支持。对于密集型的洗牌操作(shuffle-intensive)jobs,可以带来30%的性能提升,
    Task level native optimization
  • 修改了多重服务的默认端口,Hadoop2中一些服务的端口和Hadoop3中是不一样的
Hadoop 3和2之间的重要区别在于新版本提供了更好的优化和可用性
参考官网
Hadoop三大焦点组件

Hadoop重要包含三大组件:HDFS+MapReduce+YARN


  • HDFS负责海量数据的分布式存储
  • MapReduce是一个盘算模型,负责海量数据的分布式盘算
  • YARN重要负责集群资源的管理和调度


这张图代表是一台Linux机器,也可以称为是一个节点,上面安装的有JDK环境,最上面的是Hadoop集群会启动的进程,此中NameNode、SecondaryNameNode、DataNode是HDFS服务的进程,ResourceManager、NodeManager是YARN服务的进程,MapRedcue在这里没有进程,因为它是一个盘算框架,等Hadoop集群安装好了以后MapReduce程序可以在上面执行。
分布式集群安装

左边这一个是主节点,右边的两个是从节点,hadoop集群是支持主从架构的。

一主两从的hadoop集群,环境预备:三个节点
bigdata01 192.168.182.100
bigdata02 192.168.182.101
bigdata03 192.168.182.102
下载安装包

hadoop官网下载地址
版本hadoop3.2.0

设置基础环境

设置静态ip、hostname、host、firewalld、ssh免密码登录、安装JDK与环境变量、集群节点之间时间同步
设置静态ip

  1. # 主节点 IPADDR=192.168.182.100
  2. # 从节点 IPADDR=192.168.182.101、IPADDR=192.168.182.102
  3. [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
  4. TYPE="Ethernet"
  5. PROXY_METHOD="none"
  6. BROWSER_ONLY="no"
  7. BOOTPROTO="static"
  8. DEFROUTE="yes"
  9. IPV4_FAILURE_FATAL="no"
  10. IPV6INIT="yes"
  11. IPV6_AUTOCONF="yes"
  12. IPV6_DEFROUTE="yes"
  13. IPV6_FAILURE_FATAL="no"
  14. IPV6_ADDR_GEN_MODE="stable-privacy"
  15. NAME="ens33"
  16. UUID="9a0df9ec-a85f-40bd-9362-ebe134b7a100"
  17. DEVICE="ens33"
  18. ONBOOT="yes"
  19. IPADDR=192.168.182.100
  20. GATEWAY=192.168.182.2
  21. DNS1=192.168.182.2
  22. # 重启网络服务
  23. [root@bigdata01 ~]# service network restart
  24. Restarting network (via systemctl):                        [  OK  ]
  25. [root@bigdata01 ~]# ip addr
  26. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  27.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  28.     inet 127.0.0.1/8 scope host lo
  29.        valid_lft forever preferred_lft forever
  30.     inet6 ::1/128 scope host
  31.        valid_lft forever preferred_lft forever
  32. 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  33.     link/ether 00:0c:29:9c:86:11 brd ff:ff:ff:ff:ff:ff
  34.     inet 192.168.182.100/24 brd 192.168.182.255 scope global noprefixroute ens33
  35.        valid_lft forever preferred_lft forever
  36.     inet6 fe80::c8a8:4edb:db7b:af53/64 scope link noprefixroute
  37.        valid_lft forever preferred_lft forever
复制代码
设置临时主机名和永久主机名hostname

  1. # 临时主机名
  2. # 主节点 bigdata01
  3. # 从节点 bigdata02、bigdata03
  4. [root@bigdata01 ~]# hostname bigdata01
  5. [root@bigdata01 ~]# vi /etc/hostname
  6. bigdata01
复制代码
设置永久主机名与静态ip映射,在/etc/hosts文件中设置ip和主机名(hostname)的映射关系,把下面内容追加到/etc/hosts中,不能删除/etc/hosts文件中的已有内容!
  1. # 主节点 bigdata01
  2. # 从节点 bigdata02、bigdata03
  3. [root@bigdata01 ~]# vi /etc/hosts
  4. 192.168.182.100 bigdata01
复制代码
设置/etc/hosts

因为必要在主节点远程毗连两个从节点,以是必要让主节点可以或许识别从节点的主机名,使用主机名远程访问,默认环境下只能使用ip远程访问,想要使用主机名远程访问的话必要在节点的/etc/hosts文件中设置对应机器的ip和主机名信息。
以是在这里我们就必要在bigdata01的/etc/hosts文件中设置下面信息,最好把当前节点信息也设置到内里,如许这个文件中的内容就通用了,可以直接拷贝到别的两个从节点
  1. # 在bigdata01的/etc/hosts文件中配置ip与hostname映射
  2. [root@bigdata01 ~]# vi /etc/hosts
  3. 192.168.182.100 bigdata01
  4. 192.168.182.101 bigdata02
  5. 192.168.182.102 bigdata03
  6. # 在bigdata02的/etc/hosts文件中配置ip与hostname映射
  7. [root@bigdata02 ~]# vi /etc/hosts
  8. 192.168.182.100 bigdata01
  9. 192.168.182.101 bigdata02
  10. 192.168.182.102 bigdata03
  11. # 在bigdata03的/etc/hosts文件中配置ip与hostname映射
  12. [root@bigdata03 ~]# vi /etc/hosts
  13. 192.168.182.100 bigdata01
  14. 192.168.182.101 bigdata02
  15. 192.168.182.102 bigdata03
复制代码
关闭防火墙

  1. # 临时关闭防火墙
  2. [root@bigdata01 ~]# systemctl stop firewalld
  3. # 永久关闭防火墙
  4. [root@bigdata01 ~]# systemctl disable firewalld
  5. [root@bigdata02 ~]# systemctl disable firewalld
  6. [root@bigdata03 ~]# systemctl disable firewalld
复制代码
ssh免密码登录

ssh 是secure shell,安全的shell,通过ssh可以远程登录到远程linux机器。
不管是几台机器的集群,启动集群中程序的步骤都是一样的,都是通过ssh远程毗连去操作,就算是一台机器,它也会使用ssh自己连自己。
在启动集群的时候只必要在一台机器上启动就行,然后hadoop会通过ssh连到其它机器,把其它机器上面对应的程序也启动起来,使用ssh毗连其它机器的时候会发现必要输入密码,以是现在必要实现ssh免密码登录。
  1. # ssh连接主节点
  2. [root@bigdata01 ~]# ssh bigdata01
  3. The authenticity of host 'bigdata01 (fe80::c8a8:4edb:db7b:af53%ens33)' can't be established.
  4. ECDSA key fingerprint is SHA256:uUG2QrWRlzXcwfv6GUot9DVs9c+iFugZ7FhR89m2S00.
  5. ECDSA key fingerprint is MD5:82:9d:01:51:06:a7:14:24:a9:16:3d:a1:5e:6d:0d:16.
  6. Are you sure you want to continue connecting (yes/no)? yes【第一次使用这个主机名需要输入yes】
  7. Warning: Permanently added 'bigdata01,fe80::c8a8:4edb:db7b:af53%ens33' (ECDSA) to the list of known hosts.
  8. root@bigdata01's password: 【这里需要输入密码】
复制代码
ssh登录原理
ssh这种安全/加密的shell,使用的是非对称加密.
加密有两种,对称加密和非对称加密。
非对称加密的解密过程是不可逆的,比较安全。非对称加密会产生秘钥,秘钥分为公钥和私钥,在这里公钥是对外公开的,私钥是自己持有的。
ssh通信过程:
1、第一台机器会把自己的公钥给到第二台机器;
2、当第一台机器要给第二台机器通信时,第一台机器会给第二台机器发送一个随机的字符串;
3、第二台机器会使用公钥对这个字符串加密,同时第一台机器会使用自己的私钥也对这个字符串举行加密,然后也传给第二台机器;
4、这时第二台机器就有了两份加密的内容,一份是自己使用公钥加密的,一份是第一台机器使用私钥加密传过来的;
5、公钥和私钥是通过肯定的算法盘算出来的,这时第二台机器就会对比这两份加密之后的内容是否匹配。如果匹配,第二台机器就会以为第一台机器是可信的,就答应登录。如果不相等 就以为是非法的机器。

RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,公钥和私钥成对天生并可以用于加密和解密。工作原理:


  • 密钥天生:用户选择两个大素数p和q,并盘算它们的乘积n=pq,这将是公钥的一部分。然后,盘算欧拉函数φ(n)=(p-1)(q-1),选取一个与φ(n)互质的整数e(通常为一个小于φ(n)且大于1的整数),公钥包含n和e。私钥则包含n和d(满足d*e ≡ 1 mod φ(n)),如许任何知道d的人都可以解密。
  • 加密:使用接收者的公钥(n和e)举行加密。消息被转换为数字m,通过取模运算(m^e) mod n得到密文c。
  • 解密:只有拥有私钥的人才能解密,使用私钥中的d,通过盘算(c^d) mod n得到原始消息m。
  1. # 使用rsa对ssh加密
  2. # 执行这个命令以后,需要连续按 4 次回车键回到 linux 命令行才表示这个操作执行结束,在按回车的时候不需要输入任何内容。
  3. [root@bigdata01 ~]# ssh-keygen -t rsa
  4. Generating public/private rsa key pair.
  5. Enter file in which to save the key (/root/.ssh/id_rsa):
  6. Enter passphrase (empty for no passphrase):
  7. Enter same passphrase again:
  8. Your identification has been saved in /root/.ssh/id_rsa.
  9. Your public key has been saved in /root/.ssh/id_rsa.pub.
  10. The key fingerprint is:
  11. SHA256:I8J8RDun4bklmx9T45SRsKAu7FvP2HqtriYUqUqF1q4 root@bigdata01
  12. The key's randomart image is:
  13. +---[RSA 2048]----+
  14. |      o .        |
  15. |     o o o .     |
  16. |  o.. = o o      |
  17. | +o* o *   o     |
  18. |..=.= B S =      |
  19. |.o.o o B = .     |
  20. |o.o . +.o .      |
  21. |.E.o.=...o       |
  22. |  .o+=*..        |
  23. +----[SHA256]-----+
复制代码
  1. # 执行以后会在~/.ssh目录下生产对应的公钥和私钥文件
  2. [root@bigdata01 ~]# ll ~/.ssh/
  3. total 12
  4. -rw-------. 1 root root 1679 Apr  7 16:39 id_rsa
  5. -rw-r--r--. 1 root root  396 Apr  7 16:39 id_rsa.pub
复制代码
  1. # 在bigdata01上执行
  2. [root@bigdata01 ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
复制代码
  1. # 在主节点 bigdata01机器上执行下面命令,将公钥信息拷贝到从节点bigdata02
  2. [root@bigdata01 ~]# scp ~/.ssh/authorized_keys bigdata02:~/
  3. The authenticity of host 'bigdata02 (192.168.182.101)' can't be established.
  4. ECDSA key fingerprint is SHA256:uUG2QrWRlzXcwfv6GUot9DVs9c+iFugZ7FhR89m2S00.
  5. ECDSA key fingerprint is MD5:82:9d:01:51:06:a7:14:24:a9:16:3d:a1:5e:6d:0d:16.
  6. Are you sure you want to continue connecting (yes/no)? yes
  7. Warning: Permanently added 'bigdata02,192.168.182.101' (ECDSA) to the list of known hosts.
  8. root@bigdata02's password:
  9. authorized_keys                              100%  396   506.3KB/s   00:00   
  10. # # 在主节点 bigdata01机器上执行下面命令,将公钥信息拷贝到从节点bigdata03
  11. [root@bigdata01 ~]# scp ~/.ssh/authorized_keys bigdata03:~/
  12. The authenticity of host 'bigdata03 (192.168.182.102)' can't be established.
  13. ECDSA key fingerprint is SHA256:uUG2QrWRlzXcwfv6GUot9DVs9c+iFugZ7FhR89m2S00.
  14. ECDSA key fingerprint is MD5:82:9d:01:51:06:a7:14:24:a9:16:3d:a1:5e:6d:0d:16.
  15. Are you sure you want to continue connecting (yes/no)? yes
  16. Warning: Permanently added 'bigdata03,192.168.182.102' (ECDSA) to the list of known hosts.
  17. root@bigdata03's password:
  18. authorized_keys                              100%  396   606.1KB/s   00:00
复制代码
  1. # 在bigdata02上执行
  2. [root@bigdata02 ~]# cat ~/authorized_keys  >> ~/.ssh/authorized_keys
  3. # 在bigdata03上执行
  4. [root@bigdata03 ~]# cat ~/authorized_keys  >> ~/.ssh/authorized_keys
复制代码
  1. # 验证bigdata01免密登陆bigdata02
  2. [root@bigdata01 ~]# ssh bigdata02
  3. Last login: Tue Apr  7 21:33:58 2020 from bigdata01
  4. [root@bigdata02 ~]# exit
  5. logout
  6. Connection to bigdata02 closed.
  7. # # 验证bigdata01免密登陆bigdata03
  8. [root@bigdata01 ~]# ssh bigdata03
  9. Last login: Tue Apr  7 21:17:30 2020 from 192.168.182.1
  10. [root@bigdata03 ~]# exit
  11. logout
  12. Connection to bigdata03 closed.
  13. [root@bigdata01 ~]#
复制代码
没须要实现从节点之间互相免密登录,因为在启动集群的时候只有主节点必要远程毗连其它节点。
安装jdk及环境变量

  1. # 解压jdk安装包
  2. [root@bigdata01 ~]# cd /data/soft
  3. [root@bigdata01 soft]# tar -zxvf jdk-8u202-linux-x64.tar.gz
  4. # 重命名为jdk1.8
  5. [root@bigdata01 soft]# mv jdk1.8.0_202 jdk1.8
  6. # 配置环境变量 JAVA_HOME
  7. [root@bigdata01 soft]# vi /etc/profile
  8. .....
  9. export JAVA_HOME=/data/soft/jdk1.8
  10. export PATH=.:$JAVA_HOME/bin:$PATH
  11. # 验证
  12. [root@bigdata01 soft]# source /etc/profile
  13. [root@bigdata01 soft]# java -version         
  14. java version "1.8.0_202"
  15. Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
  16. Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
复制代码
集群节点之间时间同步

集群只要涉及到多个节点的就必要对这些节点做时间同步,如果节点之间时间不同步相差太多,会应该集群的稳固性,甚至导致集群出题目。
使用ntpdate -u ntp.sjtu.edu.cn实现时间同步
  1. # 默认是没有ntpdate命令的,需要使用yum在线安装
  2. [root@bigdata01 ~]# ntpdate -u ntp.sjtu.edu.cn
  3. -bash: ntpdate: command not found
  4. # 安装ntpdate
  5. [root@bigdata01 ~]# yum install -y ntpdate
  6. Loaded plugins: fastestmirror
  7. Loading mirror speeds from cached hostfile
  8. * base: mirrors.cn99.com
  9. * extras: mirrors.cn99.com
  10. * updates: mirrors.cn99.com
  11. base                                                    | 3.6 kB     00:00     
  12. extras                                                  | 2.9 kB     00:00     
  13. updates                                                 | 2.9 kB     00:00     
  14. Resolving Dependencies
  15. --> Running transaction check
  16. ---> Package ntpdate.x86_64 0:4.2.6p5-29.el7.centos will be installed
  17. --> Finished Dependency Resolution
  18. Dependencies Resolved
  19. ===============================================================================
  20. Package        Arch          Version                        Repository   Size
  21. ===============================================================================
  22. Installing:
  23. ntpdate        x86_64        4.2.6p5-29.el7.centos          base         86 k
  24. Transaction Summary
  25. ===============================================================================
  26. Install  1 Package
  27. Total download size: 86 k
  28. Installed size: 121 k
  29. Downloading packages:
  30. ntpdate-4.2.6p5-29.el7.centos.x86_64.rpm                  |  86 kB   00:00     
  31. Running transaction check
  32. Running transaction test
  33. Transaction test succeeded
  34. Running transaction
  35.   Installing : ntpdate-4.2.6p5-29.el7.centos.x86_64                        1/1
  36.   Verifying  : ntpdate-4.2.6p5-29.el7.centos.x86_64                        1/1
  37. Installed:
  38.   ntpdate.x86_64 0:4.2.6p5-29.el7.centos                                       
  39. Complete!
  40. # 执行ntpdate -u ntp.sjtu.edu.cn 确认是否可以正常执行
  41. [root@bigdata01 ~]# ntpdate -u ntp.sjtu.edu.cn
  42. 7 Apr 21:21:01 ntpdate[5447]: step time server 185.255.55.20 offset 6.252298 sec
复制代码
  1. # 建议把这个同步时间的操作添加到linux的crontab定时器中,每分钟执行一次
  2. [root@bigdata01 ~]# vi /etc/crontab
  3. * * * * * root /usr/sbin/ntpdate -u ntp.sjtu.edu.cn
复制代码
  1. # 在bigdata02和bigdata03节点上配置时间同步
  2. [root@bigdata02 ~]# yum install -y ntpdate
  3. [root@bigdata02 ~]# vi /etc/crontab
  4. * * * * * root /usr/sbin/ntpdate -u ntp.sjtu.edu.cn
  5. [root@bigdata03 ~]# yum install -y ntpdate
  6. [root@bigdata03 ~]# vi /etc/crontab
  7. * * * * * root /usr/sbin/ntpdate -u ntp.sjtu.edu.cn
复制代码
集群中三个节点的基础环境就都设置完毕了,接下来就必要在这三个节点中安装Hadoop了。
安装Hadoop

1、把hadoop-3.2.0.tar.gz安装包上传到/data/soft目次下
  1. # 把hadoop-3.2.0.tar.gz安装包上传到/data/soft
  2. [root@bigdata01 soft]# ll
  3. total 527024
  4. -rw-r--r--. 1 root root 345625475 Jul 19  2019 hadoop-3.2.0.tar.gz
  5. drwxr-xr-x. 7   10  143       245 Dec 16  2018 jdk1.8
  6. -rw-r--r--. 1 root root 194042837 Apr  6 23:14 jdk-8u202-linux-x64.tar.gz
复制代码
2、解压hadoop安装包
  1. # 在bigdata01上解压hadoop安装包
  2. [root@bigdata01 soft]# tar -zxvf hadoop-3.2.0.tar.gz
复制代码
3、修改hadoop相关设置文件


  • hadoop-env.sh,在文件末尾增长环境变量信息;
  • core-site.xml,fs.defaultFS属性中的主机名必要和主节点的主机名或者静态ip保持同等;
  • hdfs-site.xml文件,把hdfs中文件副本的数量设置为2,因为现在集群中有两个从节点,dfs.namenode.secondary.http-address设置为secondaryNamenode进程所在的节点信息;
  • mapred-site.xml,设置mapreduce使用的资源调度框架yarn;
  • yarn-site.xml,设置yarn上支持运行的服务和环境变量白名单,还必要设置resourcemanager的hostname,否则nodemanager找不到resourcemanager节点
  • workers文件,增长全部从节点的主机名,一个一行
  • start-dfs.sh,stop-dfs.sh,添加hdfs的datanode、namenode用户
    HDFS_DATANODE_USER、HDFS_DATANODE_SECURE_USER、HDFS_NAMENODE_USER、HDFS_NAMENODE_USER、HDFS_SECONDARYNAMENODE_USER;
  • start-yarn.sh,stop-yarn.sh,添加yarn的resourcemaneger、nodemanger用户
    YARN_RESOURCEMANAGER_USER、HADOOP_SECURE_DN_USER、YARN_NODEMANAGER_USER;
  1. # 修改hadoop相关配置文件
  2. [root@bigdata01 soft]# cd hadoop-3.2.0/etc/hadoop/
  3. # 首先修改hadoop-env.sh文件,在文件末尾增加环境变量信息
  4. [root@bigdata01 hadoop]# vi hadoop-env.sh
  5. export JAVA_HOME=/data/soft/jdk1.8
  6. export HADOOP_LOG_DIR=/data/hadoop_repo/logs/hadoop
  7. # 修改core-site.xml文件
  8. # 注意fs.defaultFS属性中的主机名需要和主节点的主机名或者静态ip保持一致
  9. [root@bigdata01 hadoop]# vi core-site.xml
  10. <configuration>
  11.     <property>
  12.         <name>fs.defaultFS</name>
  13.         <value>hdfs://bigdata01:9000</value>
  14.     </property>
  15.     <property>
  16.         <name>hadoop.tmp.dir</name>
  17.         <value>/data/hadoop_repo</value>
  18.    </property>
  19. </configuration>
  20. # 修改hdfs-site.xml文件
  21. # 把hdfs中文件副本的数量设置为2,最多为2,因为现在集群中有两个从节点
  22. # secondaryNamenode进程所在的节点信息
  23. [root@bigdata01 hadoop]# vi hdfs-site.xml
  24. <configuration>
  25.     <property>
  26.         <name>dfs.replication</name>
  27.         <value>2</value>
  28.     </property>
  29.     <property>
  30.         <name>dfs.namenode.secondary.http-address</name>
  31.         <value>bigdata01:50090</value>
  32.     </property>
  33. </configuration>
复制代码
  1. # 修改mapred-site.xml
  2. # 设置mapreduce使用的资源调度框架
  3. [root@bigdata01 hadoop]# vi mapred-site.xml
  4. <configuration>
  5.     <property>
  6.         <name>mapreduce.framework.name</name>
  7.         <value>yarn</value>
  8.     </property>
  9. </configuration>
复制代码
  1. # 修改yarn-site.xml,设置yarn上支持运行的服务和环境变量白名单
  2. # 注意,针对分布式集群在这个配置文件中还需要设置resourcemanager的hostname,否则nodemanager找不到resourcemanager节点。
  3. [root@bigdata01 hadoop]# vi yarn-site.xml
  4. <configuration>
  5.     <property>
  6.         <name>yarn.nodemanager.aux-services</name>
  7.         <value>mapreduce_shuffle</value>
  8.     </property>
  9.     <property>
  10.         <name>yarn.nodemanager.env-whitelist</name>
  11.         <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
  12.     </property>
  13.         <property>
  14.                 <name>yarn.resourcemanager.hostname</name>
  15.                 <value>bigdata01</value>
  16.         </property>
  17. </configuration>
复制代码
  1. # 修改workers文件
  2. # 增加所有从节点的主机名,一个一行
  3. [root@bigdata01 hadoop]# vi workers
  4. bigdata02
  5. bigdata03
复制代码
  1. # 修改启动脚本
  2. # 修改start-dfs.sh,stop-dfs.sh这两个脚本文件,在文件前面增加如下内容
  3. [root@bigdata01 hadoop]# cd /data/soft/hadoop-3.2.0/sbin
  4. [root@bigdata01 sbin]# vi start-dfs.sh
  5. HDFS_DATANODE_USER=root
  6. HDFS_DATANODE_SECURE_USER=hdfs
  7. HDFS_NAMENODE_USER=root
  8. HDFS_SECONDARYNAMENODE_USER=root
  9. [root@bigdata01 sbin]# vi stop-dfs.sh
  10. HDFS_DATANODE_USER=root
  11. HDFS_DATANODE_SECURE_USER=hdfs
  12. HDFS_NAMENODE_USER=root
  13. HDFS_SECONDARYNAMENODE_USER=root
  14. # 修改start-yarn.sh,stop-yarn.sh这两个脚本文件,在文件前面增加如下内容
  15. [root@bigdata01 sbin]# vi start-yarn.sh
  16. YARN_RESOURCEMANAGER_USER=root
  17. HADOOP_SECURE_DN_USER=yarn
  18. YARN_NODEMANAGER_USER=root
  19. [root@bigdata01 sbin]# vi stop-yarn.sh
  20. YARN_RESOURCEMANAGER_USER=root
  21. HADOOP_SECURE_DN_USER=yarn
  22. YARN_NODEMANAGER_USER=root
复制代码
4、把bigdata01节点上将修改好设置的安装包拷贝到其他两个从节点
  1. [root@bigdata01 sbin]# cd /data/soft/
  2. [root@bigdata01 soft]# scp -rq hadoop-3.2.0 bigdata02:/data/soft/
  3. [root@bigdata01 soft]# scp -rq hadoop-3.2.0 bigdata03:/data/soft/
复制代码
5、格式化HDFS
  1. # 在bigdata01节点上格式化HDFS
  2. [root@bigdata01 soft]# cd /data/soft/hadoop-3.2.0
  3. [root@bigdata01 hadoop-3.2.0]# bin/hdfs namenode -format
  4. # 如果在后面的日志信息中能看到这一行,则说明namenode格式化成功。
  5. common.Storage: Storage directory /data/hadoop_repo/dfs/name has been successfully formatted.
复制代码
6、启动集群
  1. # 在主节点 bigdata01上执行下面命令
  2. [root@bigdata01 hadoop-3.2.0]# sbin/start-all.sh
  3. Starting namenodes on [bigdata01]
  4. Last login: Tue Apr  7 21:03:21 CST 2020 from 192.168.182.1 on pts/2
  5. Starting datanodes
  6. Last login: Tue Apr  7 22:15:51 CST 2020 on pts/1
  7. bigdata02: WARNING: /data/hadoop_repo/logs/hadoop does not exist. Creating.
  8. bigdata03: WARNING: /data/hadoop_repo/logs/hadoop does not exist. Creating.
  9. Starting secondary namenodes [bigdata01]
  10. Last login: Tue Apr  7 22:15:53 CST 2020 on pts/1
  11. Starting resourcemanager
  12. Last login: Tue Apr  7 22:15:58 CST 2020 on pts/1
  13. Starting nodemanagers
  14. Last login: Tue Apr  7 22:16:04 CST 2020 on pts/1
  15. # 验证
  16. # 在bigdata01上查看java进程,是否存在NameNode、ResourceManager、SecondaryNameNode
  17. [root@bigdata01 hadoop-3.2.0]# jps
  18. 6128 NameNode
  19. 6621 ResourceManager
  20. 6382 SecondaryNameNode
  21. # 在bigdata02上查看java进程,是否存在NodeManager、DataNode
  22. [root@bigdata02 ~]# jps
  23. 2385 NodeManager
  24. 2276 DataNode
  25. # 在bigdata03上查看java进程,是否存在NodeManager、DataNode
  26. [root@bigdata03 ~]# jps
  27. 2326 NodeManager
  28. 2217 DataNode
  29. # 停止集群
  30. # 在主节点bigdata01上执行停止命令
  31. [root@bigdata01 hadoop-3.2.0]# sbin/stop-all.sh
  32. Stopping namenodes on [bigdata01]
  33. Last login: Tue Apr  7 22:21:16 CST 2020 on pts/1
  34. Stopping datanodes
  35. Last login: Tue Apr  7 22:22:42 CST 2020 on pts/1
  36. Stopping secondary namenodes [bigdata01]
  37. Last login: Tue Apr  7 22:22:44 CST 2020 on pts/1
  38. Stopping nodemanagers
  39. Last login: Tue Apr  7 22:22:46 CST 2020 on pts/1
  40. Stopping resourcemanager
  41. Last login: Tue Apr  7 22:22:50 CST 2020 on pts/1
复制代码
具体安装详情说明可查阅Hadoop官网
还可以通过webui界面来验证集群服务是否正常
HDFS webui界面:http://主节点ip:9870
YARN webui界面:http://主节点ip:8088
Hadoop的客户端节点

在现实工作中不建议直接毗连集群中的节点来操作集群,直接把集群中的节点暴露给普通开辟人员是不安全的,建议在业务机器上安装Hadoop,只必要包管业务机器上的Hadoop的设置和集群中的设置保持同等即可,如许就可以在业务机器上操作Hadoop集群了,此机器就称为是Hadoop的客户端节点,Hadoop的客户端节点大概会有多个,理论上是我们想要在哪台机器上操作hadoop集群就可以把这台机器设置为hadoop集群的客户端节点。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立山

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表