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
- # 主节点 IPADDR=192.168.182.100
- # 从节点 IPADDR=192.168.182.101、IPADDR=192.168.182.102
- [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
- TYPE="Ethernet"
- PROXY_METHOD="none"
- BROWSER_ONLY="no"
- BOOTPROTO="static"
- DEFROUTE="yes"
- IPV4_FAILURE_FATAL="no"
- IPV6INIT="yes"
- IPV6_AUTOCONF="yes"
- IPV6_DEFROUTE="yes"
- IPV6_FAILURE_FATAL="no"
- IPV6_ADDR_GEN_MODE="stable-privacy"
- NAME="ens33"
- UUID="9a0df9ec-a85f-40bd-9362-ebe134b7a100"
- DEVICE="ens33"
- ONBOOT="yes"
- IPADDR=192.168.182.100
- GATEWAY=192.168.182.2
- DNS1=192.168.182.2
- # 重启网络服务
- [root@bigdata01 ~]# service network restart
- Restarting network (via systemctl): [ OK ]
- [root@bigdata01 ~]# ip addr
- 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
- link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
- inet 127.0.0.1/8 scope host lo
- valid_lft forever preferred_lft forever
- inet6 ::1/128 scope host
- valid_lft forever preferred_lft forever
- 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
- link/ether 00:0c:29:9c:86:11 brd ff:ff:ff:ff:ff:ff
- inet 192.168.182.100/24 brd 192.168.182.255 scope global noprefixroute ens33
- valid_lft forever preferred_lft forever
- inet6 fe80::c8a8:4edb:db7b:af53/64 scope link noprefixroute
- valid_lft forever preferred_lft forever
复制代码 设置临时主机名和永久主机名hostname
- # 临时主机名
- # 主节点 bigdata01
- # 从节点 bigdata02、bigdata03
- [root@bigdata01 ~]# hostname bigdata01
- [root@bigdata01 ~]# vi /etc/hostname
- bigdata01
复制代码 设置永久主机名与静态ip映射,在/etc/hosts文件中设置ip和主机名(hostname)的映射关系,把下面内容追加到/etc/hosts中,不能删除/etc/hosts文件中的已有内容!
- # 主节点 bigdata01
- # 从节点 bigdata02、bigdata03
- [root@bigdata01 ~]# vi /etc/hosts
- 192.168.182.100 bigdata01
复制代码 设置/etc/hosts
因为必要在主节点远程毗连两个从节点,以是必要让主节点可以或许识别从节点的主机名,使用主机名远程访问,默认环境下只能使用ip远程访问,想要使用主机名远程访问的话必要在节点的/etc/hosts文件中设置对应机器的ip和主机名信息。
以是在这里我们就必要在bigdata01的/etc/hosts文件中设置下面信息,最好把当前节点信息也设置到内里,如许这个文件中的内容就通用了,可以直接拷贝到别的两个从节点
- # 在bigdata01的/etc/hosts文件中配置ip与hostname映射
- [root@bigdata01 ~]# vi /etc/hosts
- 192.168.182.100 bigdata01
- 192.168.182.101 bigdata02
- 192.168.182.102 bigdata03
- # 在bigdata02的/etc/hosts文件中配置ip与hostname映射
- [root@bigdata02 ~]# vi /etc/hosts
- 192.168.182.100 bigdata01
- 192.168.182.101 bigdata02
- 192.168.182.102 bigdata03
- # 在bigdata03的/etc/hosts文件中配置ip与hostname映射
- [root@bigdata03 ~]# vi /etc/hosts
- 192.168.182.100 bigdata01
- 192.168.182.101 bigdata02
- 192.168.182.102 bigdata03
复制代码 关闭防火墙
- # 临时关闭防火墙
- [root@bigdata01 ~]# systemctl stop firewalld
- # 永久关闭防火墙
- [root@bigdata01 ~]# systemctl disable firewalld
- [root@bigdata02 ~]# systemctl disable firewalld
- [root@bigdata03 ~]# systemctl disable firewalld
复制代码 ssh免密码登录
ssh 是secure shell,安全的shell,通过ssh可以远程登录到远程linux机器。
不管是几台机器的集群,启动集群中程序的步骤都是一样的,都是通过ssh远程毗连去操作,就算是一台机器,它也会使用ssh自己连自己。
在启动集群的时候只必要在一台机器上启动就行,然后hadoop会通过ssh连到其它机器,把其它机器上面对应的程序也启动起来,使用ssh毗连其它机器的时候会发现必要输入密码,以是现在必要实现ssh免密码登录。
- # ssh连接主节点
- [root@bigdata01 ~]# ssh bigdata01
- The authenticity of host 'bigdata01 (fe80::c8a8:4edb:db7b:af53%ens33)' can't be established.
- ECDSA key fingerprint is SHA256:uUG2QrWRlzXcwfv6GUot9DVs9c+iFugZ7FhR89m2S00.
- ECDSA key fingerprint is MD5:82:9d:01:51:06:a7:14:24:a9:16:3d:a1:5e:6d:0d:16.
- Are you sure you want to continue connecting (yes/no)? yes【第一次使用这个主机名需要输入yes】
- Warning: Permanently added 'bigdata01,fe80::c8a8:4edb:db7b:af53%ens33' (ECDSA) to the list of known hosts.
- 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。
- # 使用rsa对ssh加密
- # 执行这个命令以后,需要连续按 4 次回车键回到 linux 命令行才表示这个操作执行结束,在按回车的时候不需要输入任何内容。
- [root@bigdata01 ~]# ssh-keygen -t rsa
- Generating public/private rsa key pair.
- Enter file in which to save the key (/root/.ssh/id_rsa):
- Enter passphrase (empty for no passphrase):
- Enter same passphrase again:
- Your identification has been saved in /root/.ssh/id_rsa.
- Your public key has been saved in /root/.ssh/id_rsa.pub.
- The key fingerprint is:
- SHA256:I8J8RDun4bklmx9T45SRsKAu7FvP2HqtriYUqUqF1q4 root@bigdata01
- The key's randomart image is:
- +---[RSA 2048]----+
- | o . |
- | o o o . |
- | o.. = o o |
- | +o* o * o |
- |..=.= B S = |
- |.o.o o B = . |
- |o.o . +.o . |
- |.E.o.=...o |
- | .o+=*.. |
- +----[SHA256]-----+
复制代码- # 执行以后会在~/.ssh目录下生产对应的公钥和私钥文件
- [root@bigdata01 ~]# ll ~/.ssh/
- total 12
- -rw-------. 1 root root 1679 Apr 7 16:39 id_rsa
- -rw-r--r--. 1 root root 396 Apr 7 16:39 id_rsa.pub
复制代码- # 在bigdata01上执行
- [root@bigdata01 ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
复制代码- # 在主节点 bigdata01机器上执行下面命令,将公钥信息拷贝到从节点bigdata02
- [root@bigdata01 ~]# scp ~/.ssh/authorized_keys bigdata02:~/
- The authenticity of host 'bigdata02 (192.168.182.101)' can't be established.
- ECDSA key fingerprint is SHA256:uUG2QrWRlzXcwfv6GUot9DVs9c+iFugZ7FhR89m2S00.
- ECDSA key fingerprint is MD5:82:9d:01:51:06:a7:14:24:a9:16:3d:a1:5e:6d:0d:16.
- Are you sure you want to continue connecting (yes/no)? yes
- Warning: Permanently added 'bigdata02,192.168.182.101' (ECDSA) to the list of known hosts.
- root@bigdata02's password:
- authorized_keys 100% 396 506.3KB/s 00:00
- # # 在主节点 bigdata01机器上执行下面命令,将公钥信息拷贝到从节点bigdata03
- [root@bigdata01 ~]# scp ~/.ssh/authorized_keys bigdata03:~/
- The authenticity of host 'bigdata03 (192.168.182.102)' can't be established.
- ECDSA key fingerprint is SHA256:uUG2QrWRlzXcwfv6GUot9DVs9c+iFugZ7FhR89m2S00.
- ECDSA key fingerprint is MD5:82:9d:01:51:06:a7:14:24:a9:16:3d:a1:5e:6d:0d:16.
- Are you sure you want to continue connecting (yes/no)? yes
- Warning: Permanently added 'bigdata03,192.168.182.102' (ECDSA) to the list of known hosts.
- root@bigdata03's password:
- authorized_keys 100% 396 606.1KB/s 00:00
复制代码- # 在bigdata02上执行
- [root@bigdata02 ~]# cat ~/authorized_keys >> ~/.ssh/authorized_keys
- # 在bigdata03上执行
- [root@bigdata03 ~]# cat ~/authorized_keys >> ~/.ssh/authorized_keys
复制代码- # 验证bigdata01免密登陆bigdata02
- [root@bigdata01 ~]# ssh bigdata02
- Last login: Tue Apr 7 21:33:58 2020 from bigdata01
- [root@bigdata02 ~]# exit
- logout
- Connection to bigdata02 closed.
- # # 验证bigdata01免密登陆bigdata03
- [root@bigdata01 ~]# ssh bigdata03
- Last login: Tue Apr 7 21:17:30 2020 from 192.168.182.1
- [root@bigdata03 ~]# exit
- logout
- Connection to bigdata03 closed.
- [root@bigdata01 ~]#
复制代码 没须要实现从节点之间互相免密登录,因为在启动集群的时候只有主节点必要远程毗连其它节点。
安装jdk及环境变量
- # 解压jdk安装包
- [root@bigdata01 ~]# cd /data/soft
- [root@bigdata01 soft]# tar -zxvf jdk-8u202-linux-x64.tar.gz
- # 重命名为jdk1.8
- [root@bigdata01 soft]# mv jdk1.8.0_202 jdk1.8
- # 配置环境变量 JAVA_HOME
- [root@bigdata01 soft]# vi /etc/profile
- .....
- export JAVA_HOME=/data/soft/jdk1.8
- export PATH=.:$JAVA_HOME/bin:$PATH
- # 验证
- [root@bigdata01 soft]# source /etc/profile
- [root@bigdata01 soft]# java -version
- java version "1.8.0_202"
- Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
- Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
复制代码 集群节点之间时间同步
集群只要涉及到多个节点的就必要对这些节点做时间同步,如果节点之间时间不同步相差太多,会应该集群的稳固性,甚至导致集群出题目。
使用ntpdate -u ntp.sjtu.edu.cn实现时间同步
- # 默认是没有ntpdate命令的,需要使用yum在线安装
- [root@bigdata01 ~]# ntpdate -u ntp.sjtu.edu.cn
- -bash: ntpdate: command not found
- # 安装ntpdate
- [root@bigdata01 ~]# yum install -y ntpdate
- Loaded plugins: fastestmirror
- Loading mirror speeds from cached hostfile
- * base: mirrors.cn99.com
- * extras: mirrors.cn99.com
- * updates: mirrors.cn99.com
- base | 3.6 kB 00:00
- extras | 2.9 kB 00:00
- updates | 2.9 kB 00:00
- Resolving Dependencies
- --> Running transaction check
- ---> Package ntpdate.x86_64 0:4.2.6p5-29.el7.centos will be installed
- --> Finished Dependency Resolution
- Dependencies Resolved
- ===============================================================================
- Package Arch Version Repository Size
- ===============================================================================
- Installing:
- ntpdate x86_64 4.2.6p5-29.el7.centos base 86 k
- Transaction Summary
- ===============================================================================
- Install 1 Package
- Total download size: 86 k
- Installed size: 121 k
- Downloading packages:
- ntpdate-4.2.6p5-29.el7.centos.x86_64.rpm | 86 kB 00:00
- Running transaction check
- Running transaction test
- Transaction test succeeded
- Running transaction
- Installing : ntpdate-4.2.6p5-29.el7.centos.x86_64 1/1
- Verifying : ntpdate-4.2.6p5-29.el7.centos.x86_64 1/1
- Installed:
- ntpdate.x86_64 0:4.2.6p5-29.el7.centos
- Complete!
- # 执行ntpdate -u ntp.sjtu.edu.cn 确认是否可以正常执行
- [root@bigdata01 ~]# ntpdate -u ntp.sjtu.edu.cn
- 7 Apr 21:21:01 ntpdate[5447]: step time server 185.255.55.20 offset 6.252298 sec
复制代码- # 建议把这个同步时间的操作添加到linux的crontab定时器中,每分钟执行一次
- [root@bigdata01 ~]# vi /etc/crontab
- * * * * * root /usr/sbin/ntpdate -u ntp.sjtu.edu.cn
复制代码- # 在bigdata02和bigdata03节点上配置时间同步
- [root@bigdata02 ~]# yum install -y ntpdate
- [root@bigdata02 ~]# vi /etc/crontab
- * * * * * root /usr/sbin/ntpdate -u ntp.sjtu.edu.cn
- [root@bigdata03 ~]# yum install -y ntpdate
- [root@bigdata03 ~]# vi /etc/crontab
- * * * * * root /usr/sbin/ntpdate -u ntp.sjtu.edu.cn
复制代码 集群中三个节点的基础环境就都设置完毕了,接下来就必要在这三个节点中安装Hadoop了。
安装Hadoop
1、把hadoop-3.2.0.tar.gz安装包上传到/data/soft目次下
- # 把hadoop-3.2.0.tar.gz安装包上传到/data/soft
- [root@bigdata01 soft]# ll
- total 527024
- -rw-r--r--. 1 root root 345625475 Jul 19 2019 hadoop-3.2.0.tar.gz
- drwxr-xr-x. 7 10 143 245 Dec 16 2018 jdk1.8
- -rw-r--r--. 1 root root 194042837 Apr 6 23:14 jdk-8u202-linux-x64.tar.gz
复制代码 2、解压hadoop安装包
- # 在bigdata01上解压hadoop安装包
- [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;
- # 修改hadoop相关配置文件
- [root@bigdata01 soft]# cd hadoop-3.2.0/etc/hadoop/
- # 首先修改hadoop-env.sh文件,在文件末尾增加环境变量信息
- [root@bigdata01 hadoop]# vi hadoop-env.sh
- export JAVA_HOME=/data/soft/jdk1.8
- export HADOOP_LOG_DIR=/data/hadoop_repo/logs/hadoop
- # 修改core-site.xml文件
- # 注意fs.defaultFS属性中的主机名需要和主节点的主机名或者静态ip保持一致
- [root@bigdata01 hadoop]# vi core-site.xml
- <configuration>
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://bigdata01:9000</value>
- </property>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/data/hadoop_repo</value>
- </property>
- </configuration>
- # 修改hdfs-site.xml文件
- # 把hdfs中文件副本的数量设置为2,最多为2,因为现在集群中有两个从节点
- # secondaryNamenode进程所在的节点信息
- [root@bigdata01 hadoop]# vi hdfs-site.xml
- <configuration>
- <property>
- <name>dfs.replication</name>
- <value>2</value>
- </property>
- <property>
- <name>dfs.namenode.secondary.http-address</name>
- <value>bigdata01:50090</value>
- </property>
- </configuration>
复制代码- # 修改mapred-site.xml
- # 设置mapreduce使用的资源调度框架
- [root@bigdata01 hadoop]# vi mapred-site.xml
- <configuration>
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
- </configuration>
复制代码- # 修改yarn-site.xml,设置yarn上支持运行的服务和环境变量白名单
- # 注意,针对分布式集群在这个配置文件中还需要设置resourcemanager的hostname,否则nodemanager找不到resourcemanager节点。
- [root@bigdata01 hadoop]# vi yarn-site.xml
- <configuration>
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</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.resourcemanager.hostname</name>
- <value>bigdata01</value>
- </property>
- </configuration>
复制代码- # 修改workers文件
- # 增加所有从节点的主机名,一个一行
- [root@bigdata01 hadoop]# vi workers
- bigdata02
- bigdata03
复制代码- # 修改启动脚本
- # 修改start-dfs.sh,stop-dfs.sh这两个脚本文件,在文件前面增加如下内容
- [root@bigdata01 hadoop]# cd /data/soft/hadoop-3.2.0/sbin
- [root@bigdata01 sbin]# vi start-dfs.sh
- HDFS_DATANODE_USER=root
- HDFS_DATANODE_SECURE_USER=hdfs
- HDFS_NAMENODE_USER=root
- HDFS_SECONDARYNAMENODE_USER=root
- [root@bigdata01 sbin]# vi stop-dfs.sh
- HDFS_DATANODE_USER=root
- HDFS_DATANODE_SECURE_USER=hdfs
- HDFS_NAMENODE_USER=root
- HDFS_SECONDARYNAMENODE_USER=root
- # 修改start-yarn.sh,stop-yarn.sh这两个脚本文件,在文件前面增加如下内容
- [root@bigdata01 sbin]# vi start-yarn.sh
- YARN_RESOURCEMANAGER_USER=root
- HADOOP_SECURE_DN_USER=yarn
- YARN_NODEMANAGER_USER=root
- [root@bigdata01 sbin]# vi stop-yarn.sh
- YARN_RESOURCEMANAGER_USER=root
- HADOOP_SECURE_DN_USER=yarn
- YARN_NODEMANAGER_USER=root
复制代码 4、把bigdata01节点上将修改好设置的安装包拷贝到其他两个从节点
- [root@bigdata01 sbin]# cd /data/soft/
- [root@bigdata01 soft]# scp -rq hadoop-3.2.0 bigdata02:/data/soft/
- [root@bigdata01 soft]# scp -rq hadoop-3.2.0 bigdata03:/data/soft/
复制代码 5、格式化HDFS
- # 在bigdata01节点上格式化HDFS
- [root@bigdata01 soft]# cd /data/soft/hadoop-3.2.0
- [root@bigdata01 hadoop-3.2.0]# bin/hdfs namenode -format
- # 如果在后面的日志信息中能看到这一行,则说明namenode格式化成功。
- common.Storage: Storage directory /data/hadoop_repo/dfs/name has been successfully formatted.
复制代码 6、启动集群
- # 在主节点 bigdata01上执行下面命令
- [root@bigdata01 hadoop-3.2.0]# sbin/start-all.sh
- Starting namenodes on [bigdata01]
- Last login: Tue Apr 7 21:03:21 CST 2020 from 192.168.182.1 on pts/2
- Starting datanodes
- Last login: Tue Apr 7 22:15:51 CST 2020 on pts/1
- bigdata02: WARNING: /data/hadoop_repo/logs/hadoop does not exist. Creating.
- bigdata03: WARNING: /data/hadoop_repo/logs/hadoop does not exist. Creating.
- Starting secondary namenodes [bigdata01]
- Last login: Tue Apr 7 22:15:53 CST 2020 on pts/1
- Starting resourcemanager
- Last login: Tue Apr 7 22:15:58 CST 2020 on pts/1
- Starting nodemanagers
- Last login: Tue Apr 7 22:16:04 CST 2020 on pts/1
- # 验证
- # 在bigdata01上查看java进程,是否存在NameNode、ResourceManager、SecondaryNameNode
- [root@bigdata01 hadoop-3.2.0]# jps
- 6128 NameNode
- 6621 ResourceManager
- 6382 SecondaryNameNode
- # 在bigdata02上查看java进程,是否存在NodeManager、DataNode
- [root@bigdata02 ~]# jps
- 2385 NodeManager
- 2276 DataNode
- # 在bigdata03上查看java进程,是否存在NodeManager、DataNode
- [root@bigdata03 ~]# jps
- 2326 NodeManager
- 2217 DataNode
- # 停止集群
- # 在主节点bigdata01上执行停止命令
- [root@bigdata01 hadoop-3.2.0]# sbin/stop-all.sh
- Stopping namenodes on [bigdata01]
- Last login: Tue Apr 7 22:21:16 CST 2020 on pts/1
- Stopping datanodes
- Last login: Tue Apr 7 22:22:42 CST 2020 on pts/1
- Stopping secondary namenodes [bigdata01]
- Last login: Tue Apr 7 22:22:44 CST 2020 on pts/1
- Stopping nodemanagers
- Last login: Tue Apr 7 22:22:46 CST 2020 on pts/1
- Stopping resourcemanager
- 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企服之家,中国第一个企服评测及商务社交产业平台。 |