1 本地模式搭建
1.1 本地模式介绍
- 特点:
本地模式,即运?在单台机器上,没有分布式思想,使用的是本地?件系统。
- ?途:
本地模式主要?于对MapReduce程序的逻辑进?调试,确保程序的正确。由于在本地模式下测试和调试MapReduce程序较为方便,因此,这种模式适宜用在开发阶段。
?1.2 平台软件说明
平台&软件 | 说明 | 操作系统 | Windows7 或 Windows 10 或 Mac OS | 虚拟软件 | VMWare 或 Parallels Desktop(Mac Only) | 虚拟机 | 主机名: oak-ubuntu,IP地址: 192.168.10.128 | SSH?具 | MobaXterm(Windows) 或 FinalShell(Mac) | 软件包上传路径 | /root/softwares | 软件安装路径 | /usr/local | JDK | jdk-8u221-linux-x64.tar.gz | Hadoop | hadoop-2.7.6.tar.gz | ?户 | root |
1.3 环境搭建
1.3.1 JDK的安装
1. 检查是否已经安装过或是否有内置的JDK,如果有,将其卸载
# 卸载之前的原因,主要是需要保证安装的JDK版本的正确性。
[root@oak-ubuntu ~]# rpm -qa | grep jdk? ? ? ? ? ?#如果有,请卸载
[root@oak-ubuntu ~]# rpm -e xxxxxxxx --nodeps? ? ?#将查询到的内置jdk强制卸载
2. 上传jdk1.8到指定路径
使?MobaXterm或者FinalShell直接上传即可,上传到 /root/softwares 下
3. 解压jdk到/usr/local/下
[root@oak-ubuntu?~]# cd /root/softwares
[root@oak-ubuntu?~]# tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/local
4. 更名操作
# 更改名字,是为了后续时候的时候?便,不?再写后?的版本号
[root@oak-ubuntu ~]# cd /usr/local
[root@oak-ubuntu local]# mv jdk1.8.0_221/ jdk-1.8.0
5. 配置环境变量
[root@oak-ubuntu local]# vim /etc/profile
...上述内容省略,在末尾添加即可...
# Java Environment
export JAVA_HOME=/usr/local/jdk-1.8.0
export PATH=$PATH:$JAVA_HOME/bin
6. 重新引导,使得环境变量?效
[root@oak-ubuntu local]# source /etc/profile
7. 验证,验证自己的Java环境是否搭建完成
[root@oak-ubuntu local]# java -version
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)
[root@oak-ubuntu local]# javac
...
1.3.2 Hadoop的安装
1. 上传Hadoop到Linux
使?MobaXterm或者FinalShell上传到 /root/softwares 下即可
2. 解压
[root@oak-ubuntu ~]# cd /root/softwares
[root@oak-ubuntu ~]# tar -zxvf hadoop-2.7.6.tar.gz -C /usr/local
3.?配置Hadoop的环境变量
[root@oak-ubuntu ~]# vim /etc/profile
...上述内容省略,在最下?添加即可...
# Hadoop Environment
export HADOOP_HOME=/usr/local/hadoop-2.7.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
4.重新引导,使得环境变量?效
[root@oak-ubuntu local]# source /etc/profile
5.验证是否配置成功
[root@oak-ubuntu local]# hadoop version
Hadoop 2.7.6
Subversion https://shv@git-wip-us.apache.org/repos/asf/hadoop.git -r 085099c66cf28be31604560c376fa282e69282b8
Compiled by kshvachk on 2018-04-18T01:33Z
Compiled with protoc 2.5.0
From source with checksum 71e2695531cb3360ab74598755d036
This command was run using /usr/local/hadoop2.7/share/hadoop/common/hadoop-common-2.7.6.jar
1.3.3?Hadoop目录说明
[root@oak-ubuntu hadoop2.7]# ll
total 116
drwxr-xr-x. 2 20415 101 194 Apr 18 2018 bin
drwxr-xr-x. 3 20415 101 20 Apr 18 2018 etc
drwxr-xr-x. 2 20415 101 106 Apr 18 2018 include
drwxr-xr-x. 3 20415 101 20 Apr 18 2018 lib
drwxr-xr-x. 2 20415 101 239 Apr 18 2018 libexec
-rw-r--r--. 1 20415 101 86424 Apr 18 2018 LICENSE.txt
drwxr-xr-x. 3 root root 4096 Jul 30 08:39 logs
-rw-r--r--. 1 20415 101 14978 Apr 18 2018 NOTICE.txt
-rw-r--r--. 1 20415 101 1366 Apr 18 2018 README.txt
drwxr-xr-x. 2 20415 101 4096 Apr 18 2018 sbin
drwxr-xr-x. 3 20415 101 20 Jun 29 17:18 share
drwxr-xr-x 4 root root 37 Jul 23 20:56 tmp
- bin => hadoop的?进制执?命令?件存储?录
- sbin => hadoop的执?脚本存储?录
- etc => hadoop的配置?件存储?录
- lib/libexec => hadoop的资源库存储?录
- share => hadoop的共享资源、开发?具和案例存储?录
- include => hadoop的?具脚本存储?录
2??伪分布式集群搭建
2.1. 伪分布式模式介绍
1.特点
- 在?台机器上安装,使?的是分布式思想,即分布式?件系统,?本地?件系 统。
- Hdfs涉及到的相关守护进程(namenode,datanode,secondarynamenode) 都运?在?台机器上,都是独?的java进程。
2. ?途
?Standalone mode 多了代码调试功能,允许检查内存使?情况,HDFS输?输出,以及其他的守护进程交互。
?2.2. 平台软件说明
平台&软件 | 说明 | 操作系统 | Windows7 或 Windows 10 或 Mac OS | 虚拟软件 | VMWare 或 Parallels Desktop(Mac Only) | 虚拟机 | 主机名: oak-ubuntu,IP地址: 192.168.10.128 | SSH?具 | MobaXterm(Windows) 或 FinalShell(Mac) | 软件包上传路径 | /root/softwares | 软件安装路径 | /usr/local | JDK | jdk-8u221-linux-x64.tar.gz | Hadoop | hadoop-2.7.6.tar.gz | ?户 | root |
2.3 伪分布式搭建环境准备?
1. 总纲
1. 确保防?墙是关闭状态。
2. 确保NAT模式和静态IP的确定 (192.168.10.101)
3. 确保/etc/hosts?件?, ip和hostname的映射关系
4. 确保免密登陆localhost有效
5. jdk和hadoop的环境变量配置
?2. 防?墙关闭确认
[root@oak-ubuntu ~]# systemctl stop firewalld
[root@oak-ubuntu ~]# systemctl disable firewalld.service
[root@oak-ubuntu ~]# systemctl stop NetworkManager
[root@oak-ubuntu ~]# systemctl disable NetworkManager
#最好也把selinux关闭掉,这是linux系统的?个安全机制,进??件中将SELINUX设置为disabled
[root@oak-ubuntu ~]# vi /etc/selinux/config
.........
SELINUX=disabled
.........
3. 配置/etc/hosts?件
-- 进?hosts?件,配置?下ip和hostname
[root@oak-ubuntu ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4
localhost4.localdomain4
::1 localhost localhost.localdomain localhost6
localhost6.localdomain6
192.168.10.128 oak-ubuntu <====添加本机的静态IP和本机的主机名之间的映射关系
4. 确保ssh对localhost的免密登陆认证有效
# 1. 使?rsa加密技术,?成公钥和私钥。?路回?即可
[root@oak-ubuntu ~]# ssh-keygen -t rsa
# 2. 进?~/.ssh?录下,使?ssh-copy-id命令
[root@oak-ubuntu .ssh]# ssh-copy-id root@localhost
# 3. 进?验证,去掉第?次的询问(yes/no)
[hadoop@oak-ubuntu .ssh]# ssh localhost
5. 安装Jdk和Hadoop,配置相关环境变量
-1. 上传和解压两个软件包
[root@oak-ubuntu ~]# tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/local/
[root@oak-ubuntu ~]# tar -zxvf hadoop-2.7.6.tar.gz -C /usr/local/
-2. 进?local?,给两个软件更名
[root@oak-ubuntu ~]# cd /usr/local/
[root@oak-ubuntu local]# mv 1.8.0_221/ jdk
[root@oak-ubuntu local]# mv hadoop-2.7.6/ hadoop
-3. 配置环境变量
[hadoop@oak-ubuntu local]# vi /etc/profile
.....省略...........
#java environment
export JAVA_HOME=/usr/local/jdk-1.8.0
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
#hadoop environment
export HADOOP_HOME=/usr/local/hadoop-2.7.6
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
2.4 伪分布式相关?件配置
1. core-site.xml的配置
[root@oak-ubuntu ~]# cd $HADOOP_HOME/etc/hadoop
[root@oak-ubuntu hadoop]# vi core-site.xml
<configuration>
<!-- 配置分布式?件系统的schema和ip以及port,默认8020-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:8020/</value>
</property>
</configuration>
扩展: hadoop1.x的默认端?是9000,hadoop2.x的默认端?是8020,使?哪?个都可以
2. hdfs-site.xml的配置
[root@oak-ubuntu hadoop]# vi hdfs-site.xml
<configuration>
<!-- 配置副本数,注意,伪分布模式只能是1。-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
3. hadoop-env.sh的配置:指定jdk的环境
[root@oak-ubuntu hadoop]# vi hadoop-env.sh
................
# The java implementation to use.
export JAVA_HOME=/usr/local/jdk-1.8.0
..................
2.5 格式化NameNode
1. 格式化命令
#只需要第一次搭建hdfs的时候执行,以后不能执行。如果执行会将所有数据的数据清除
[root@oak-ubuntu hadoop]# hdfs namenode -format
2.6 启动HDFS
1. 启动伪分布式
[root@oak-ubuntu hadoop]# start-dfs.sh
2. 启动滚动信息
3. jps命令查看守护进程
从上图可以看到,启动脚本会开启分布式?件系统上的相关进程:
namenode
datanode
secondarynamenode
?2.7 WebUI查看
可以在浏览器上输?:192.168.10.101:50070 来查看?下伪分布式集群的信息
--1. 浏览?下??上提示的ClusterID,BlockPoolID
--2. 查看?下活跃节点(Live Nodes)的个数,应该是1个
Compiled:编译 hadoop是由kshvachk?具集成的
Cluster ID:集群id
Block Pool ID:datanode节点的block池的id,每个datanode节点的都要?样
2.8 程序案例演示:wordcount程序
1. 准备要统计的两个?件,存储到/root/data/下
--1. 创建data?录 [root@oak-ubuntu hadoop]# mkdir ~/data --2. 将以下两个?件上传到data?录下 - poetry1.txt - poetry2.txt
2. 在hdfs上创建存储?录
[root@oak-ubuntu hadoop]# hdfs dfs -mkdir /input
?3. 将本地?件系统上的上传到hdfs上,并在web上查看?下
[root@oak-ubuntu hadoop]$ hdfs dfs -put ~/data/poetry* /input/
?4. 运??带的单词统计程序wordcount
[root@oak-ubuntu hadoop]# cd $HADOOP_HOME
[root@oak-ubuntu hadoop]# hadoop jar
share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount /input /out
5. 查看webui
?6. 查看part-r-00000?件
[root@oak-ubuntu hadoop]# hdfs dfs -cat /out/part-r-00000
3?完全分布式集群搭建
3.1. 完全分布式模式介绍
完全分布式,指的是在真实环境下,使?多台机器,共同配合,来构建?个完整的分布式 ?件系统。 在真实环境中,hdfs中的相关守护进程也会分布在不同的机器中,?如: -1. namenode守护进程尽可能的单独部署在?台硬件性能相对来说?较好的机器中。 -2. 其他的每台机器上都会部署?个datanode守护进程,?般的硬件环境即可。 -3. secondarynamenode守护进程最好不要和namenode在同?台机器上。
?3.2. 平台软件说明
平台&软件 | 说明 | 操作系统 | Windows7 或 Windows 10 或 Mac OS | 虚拟软件 | VMWare 或 Parallels Desktop(Mac Only) | 虚拟机 | 主机名: hadoop01,IP地址: 192.168.10.101 主机名: hadoop02,IP地址: 192.168.10.102 主机名: hadoop03,IP地址: 192.168.10.103 | SSH?具 | MobaXterm(Windows) 或 FinalShell(Mac) | 软件包上传路径 | /root/softwares | 软件安装路径 | /usr/local | JDK | jdk-8u221-linux-x64.tar.gz | Hadoop | hadoop-2.7.6.tar.gz | ?户 | root |
注意: 实际?产环境中,不会使?root?户来搭建和管理hdfs,?是使?普通?户。这?为了?便学习,我们才使?的root?户。 ps: 1.如果你是从伪分布式过来的,最好先把伪分布式的相关守护进程关闭:stop-all.sh 2.删除原来伪分布式的相关设置 如果原来使?的是默认路径,现在已经没有?了 如果原来使?的跟现在全分布式路径?样,因为这?跟之前的初始化的内容不?样,?且 这个?件要让系统?动?成 综上:要删除掉namenode和datanode的?录
3.3. 守护进程布局?
部署hdfs完全分布式的同时搭建?下yarn。hdfs和yarn的相关守护进程的布局如下:
hadoop01: namenode,datanode,ResourceManager,nodemanager
hadoop02: datanode,nodemanager,secondarynamenode
hadoop03: datanode,nodemanager
3.4? 完全分布式搭建环境准备
1. 总纲
-1. 三台机器的防?墙必须是关闭的. -2. 确保三台机器的?络配置畅通(NAT模式,静态IP,主机名的配置) -3. 确保/etc/hosts?件配置了ip和hostname的映射关系 -4. 确保配置了三台机器的免密登陆认证(克隆会更加?便) -5. 确保所有机器时间同步 -6. jdk和hadoop的环境变量配置
?2. 关闭防?墙
[root@hadoop01 ~]# systemctl stop firewalld
[root@hadoop01 ~]# systemctl disable firewalld
[root@hadoop01 ~]# systemctl stop NetworkManager
[root@hadoop01 ~]# systemctl disable NetworkManager
#最好也把selinux关闭掉,这是linux系统的?个安全机制,进??件中将SELINUX设置为disabled
[root@hadoop01 ~]# vi /etc/selinux/config
.........
SELINUX=disabled
.........
情况说明: 如果安装好三台机器,三台机器的防?墙都需要单独关闭和设置开机不启动。如果准备使?克隆?式,只关闭hadoop01机器即可。下?的配置也是如此。
3. 静态IP和主机名配置
--1. 配置静态IP(确保NAT模式)
[root@hadoop01 ~]# vi /etc/sysconfig/networkscripts/ifcfg-ens33
............
BOOTPROTO=static # 将dhcp改为static
............
ONBOOT=yes # 将no改为yes
IPADDR=192.168.10.101 # 添加IPADDR属性和ip地址
PREFIX=24 # 添加
NETMASK=255.255.255.0或者PREFIX=24
GATEWAY=192.168.10.2 # 添加?关GATEWAY
DNS1=114.114.114.114 # 添加DNS1和备份DNS
DNS2=8.8.8.8
--2. 重启?络服务
[root@hadoop01 ~]# systemctl restart network
或者
[root@hadoop01 ~]# service network restart
--3. 修改主机名(如果修改过,请略过这?步)
[root@localhost ~]# hostnamectl set-hostname hadoop01
或者
[root@localhost ~]# vi /etc/hostname
hadoop01
4. 配置/etc/hosts?件
[root@hadoop01 ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4
localhost4.localdomain4
::1 localhost localhost.localdomain localhost6
localhost6.localdomain6
192.168.10.101 hadoop01 #添加本机的静态IP和本机的主机名之间的映射关系
192.168.10.102 hadoop02
192.168.10.103 hadoop03
5. 免密登陆认证
-1. 使?rsa加密技术,?成公钥和私钥。?路回?即可
[root@hadoop01 ~]# cd ~
[root@hadoop01 ~]# ssh-keygen -t rsa
-2. 进?~/.ssh?录下,使?ssh-copy-id命令
[root@hadoop01 ~]# cd ~/.ssh
[root@hadoop01 .ssh]# ssh-copy-id root@hadoop01
-3. 进?验证
[hadoop@hadoop01 .ssh]# ssh hadoop01
#下?的第?次执?时输?yes后,不提示输?密码就对了
[hadoop@hadoop01 .ssh]# ssh localhost
[hadoop@hadoop01 .ssh]# ssh 0.0.0.0
注意:三台机器提前安装好的情况下,需要同步公钥?件。如果使?克隆技术。那
么使?同?套密钥对就?便多了。
6. 时间同步
7. 安装Jdk和Hadoop,配置相关环境变量
-1. 上传和解压两个软件包
[root@hadoop01 ~]# tar -zxvf jdk-8u221-linux-x64.tar.gz -C
/usr/local/
[root@hadoop01 ~]# tar -zxvf hadoop-2.7.6.tar.gz -C
/usr/local/
-2. 进?local?,给两个软件更名
[root@hadoop01 ~]# cd /usr/local/
[root@hadoop01 local]# mv 1.8.0_221/ jdk
[root@hadoop01 local]# mv hadoop-2.7.6/ hadoop
-3. 配置环境变量
[hadoop@hadoop01 local]# vi /etc/profile
.....省略...........
#java environment
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
#hadoop environment
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
3.5 Hadoop的配置?件
1. 在完全分布式集群的配置中,需要配置的是4个配置?件
core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml
?2. 这?个配置?件有默认的配置,命名为default
core-default.xml hdfs-default.xml mapred-default.xml yarn-default.xml
?3. 我们可以将默认的配置?件找出来,看看默认的配置
[root@hadoop01 share]# cd /usr/local/hadoop/share
[root@hadoop01 share]# find -name "*-default.xml" -exec cp {} ~/defaultXml \;
4. 属性的优先级
代码中配置的属性 > *-site.xml > *-default.xml
3.6 完全分布式配置
1. 配置core-site.xml
[root@hadoop01 ~]# cd $HADOOP_HOME/etc/hadoop/
[root@hadoop01 hadoop]# vi core-site.xml
<configuration>
<!-- hdfs的地址名称:schame,ip,port-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:8020</value>
</property>
<!-- hdfs的基础路径,被其他属性所依赖的?个基础路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
2. 配置hdfs-site.xml
[root@hadoop01 hadoop]# vi hdfs-site.xml
<configuration>
<!-- namenode守护进程管理的元数据?件fsimage存储的位置-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
</property>
<!-- 确定DFS数据节点应该将其块存储在本地?件系统的何处-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
</property>
<!-- 块的副本数-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 块的??(128M),下?的单位是字节-->
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property>
<!-- secondarynamenode守护进程的http地址:主机名和端?号。参考
守护进程布局-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop02:50090</value>
</property>
<!-- namenode守护进程的http地址:主机名和端?号。参考守护进程布
局-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop01:50070</value>
</property>
</configuration>
3. 配置mapred-site.xml
[root@hadoop01 hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@hadoop01 hadoop]# vi mapred-site.xml
<configuration>
<!-- 指定mapreduce使?yarn资源管理器-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 配置作业历史服务器的地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop01:10020</value>
</property>
<!-- 配置作业历史服务器的http地址-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop01:19888</value>
</property>
</configuration>
4. 配置yarn-site.xml
[root@hadoop01 hadoop]# vi yarn-site.xml
<configuration>
<!-- 指定yarn的shuffle技术-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定resourcemanager的主机名-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<!--下?的可选-->
<!--指定shuffle对应的类 -->
<property>
<name>yarn.nodemanager.auxservices.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<!--配置resourcemanager的内部通讯地址-->
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop01:8032</value>
</property>
<!--配置resourcemanager的scheduler的内部通讯地址-->
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop01:8030</value>
</property>
<!--配置resoucemanager的资源调度的内部通讯地址-->
<property>
<name>yarn.resourcemanager.resourcetracker.address</name>
<value>hadoop01:8031</value>
</property>
<!--配置resourcemanager的管理员的内部通讯地址-->
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop01:8033</value>
</property>
<!--配置resourcemanager的web ui 的监控??-->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop01:8088</value>
</property>
</configuration>
5. 配置hadoop-env.sh
[root@hadoop01 hadoop]# vi hadoop-env.sh
.........
# The java implementation to use.
export JAVA_HOME=/usr/local/jdk-1.8.0
.........
6. 配置slaves?件
# 此?件?于指定datanode守护进程所在的机器节点主机名
[root@hadoop01 hadoop]# vi slaves
hadoop01
hadoop02
hadoop03
7. 配置yarn-env.sh?件
# 此?件可以不配置,不过,最好还是修改?下yarn的jdk环境?较好
[root@hadoop01 hadoop]# vi yarn-env.sh
.........
# some Java parameters
export JAVA_HOME=/usr/local/jdk-1.8.0
if [ "$JAVA_HOME" != "" ]; then
#echo "run java in $JAVA_HOME"
JAVA_HOME=$JAVA_HOME
fi
.........
3.7? 另外两台机器配置说明
两种?式可选择配置另外几台机器的hadoop:
?式?: “scp”进?同步
提示:本?法适?于多台虚拟机已经提前搭建出来的场景。
--1. 同步hadoop到slave节点上
[root@hadoop01 ~]# cd /usr/local
[root@hadoop01 local]# scp -r ./hadoop hadoop02:/usr/local/
[root@hadoop01 local]# scp -r ./hadoop hadoop03:/usr/local/
--2. 同步/etc/profile到slave节点上
[root@hadoop01 local]# scp /etc/profile hadoop02:/etc/
[root@hadoop01 local]# scp /etc/profile hadoop03:/etc/
--3. 如果slave节点上的jdk也没有安装,别忘记同步jdk。
--4. 检查是否同步了/etc/hosts?件
?式?: 克隆hadoop01虚拟机
提示:本?法适?于还没有安装slave虚拟机的场景。通过克隆hadoop01节点的?
式,来克隆?个hadoop02和hadoop03机器节点,这种?式就不?重复安装环境
和配置?件了,效率?常?,节省了?部分时间(免密认证的秘钥对都是相同的?套)。
--1. 打开?个新克隆出来的虚拟机,修改主机名
[root@hadoop01 ~]# hostnamectl set-hostname hadoop02
--2. 修改ip地址
[root@hadoop01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
.........省略.........
IPADDR=192.168.10.102 <==修改为hadoop02对应的ip地
址
.........省略........
--3. 重启?络服务
[root@hadoop01 ~]# systemctl restart network
--4. 其他新克隆的虚拟机重复以上1~3步
--5. 免密登陆的验证
从hadoop01机器上,连接其他的每?个节点,验证免密是否好使,同时去掉第
?次的询问步骤
--6. 建议:每台机器在重启?络服务后,最好reboot?下。
3.8 格式化NameNode
1. 注意事项
格式化完成NameNode后,会在core-site.xml中的配置hadoop.tmp.dir的路 径下?成集群相关的?件。如果之前在伪分布式的时候已经格式化完成,并且这个路 径已经?成了,需要先将这个?录?动删除掉,然后再格式化集群,否则会导致集群 启动失败,NameNode和DataNode?法建?连接。
?2. 在hadoop01机器上运?命令
[root@hadoop01 ~]# hdfs namenode -format
3. 格式化的相关信息解读
--1. ?成?个集群唯?标识符:clusterid --2. ?成?个块池唯?标识符:blockPoolId --3. ?成namenode进程管理内容(fsimage)的存储路径: ?默认配置?件属性hadoop.tmp.dir指定的路径下?成dfs/name?录 --4. ?成镜像?件fsimage,记录分布式?件系统根路径的元数据 --5. 其他信息都可以查看?下,?如块的副本数,集群的fsOwner等。
3.9 启动集群?
1. 启动脚本和关闭脚本介绍
1. 启动脚本 ?-- start-dfs.sh :?于启动hdfs集群的脚本 ?-- start-yarn.sh :?于启动yarn守护进程 ?-- start-all.sh :?于启动hdfs和yarn 2. 关闭脚本 ?-- stop-dfs.sh :?于关闭hdfs集群的脚本 ?-- stop-yarn.sh :?于关闭yarn守护进程 -- stop-all.sh :?于关闭hdfs和yarn 3. 单个守护进程脚本 ?-- hadoop-daemons.sh :?于单独启动或关闭hdfs的某?个守护进 程的脚本 ?-- hadoop-daemon.sh :?于单独启动或关闭hdfs的某?个守护进 程的脚本 ?reg: ?hadoop-daemon.sh [start|stop] [namenode|datanode|secondarynamenode] ? ?-- yarn-daemons.sh :?于单独启动或关闭hdfs的某?个守护进程的 脚本 ?-- yarn-daemon.sh :?于单独启动或关闭hdfs的某?个守护进 程的脚本 ?reg: ?yarn-daemon.sh [start|stop] [resourcemanager|nodemanager]
?2. 启动hdfs
1. 使?start-dfs.sh,启动 hdfs
2. 启动过程解析
- 启动集群中的各个机器节点上的分布式?件系统的守护进程 ??个namenode和resourcemanager以及secondarynamenode ?多个datanode和nodemanager - 在namenode守护进程管理内容的?录下?成edit?志?件 - 在每个datanode所在节点下?成${hadoop.tmp.dir}/dfs/data?录,
?3. jps查看进程
--1. 在hadoop01上运?jps指令,会有如下进程 ?namenode ?datanode --2. 在hadoop02上运?jps指令,会有如下进程 ?secondarynamenode ?datanode --3. 在hadoop03上运?jps指令,会有如下进程 ?datanode
注意:
?如果哪台机器的相关守护进程没有开启,那么,就查看哪台机器上的守护进程对应的?志log?件,注意,启动脚本运?时提醒的?志后缀是*.out,?我们 查看的是*.log?件。此?件的位置:${HADOOP_HOME}/logs/?。
4. WebUI查看
http://192.168.10.101:50070/
?3. 启动yarn
1. 使?start-yarn.sh脚本
2. jps查看
--1. 在hadoop01上运?jps指令,会多出有如下进程 ?resoucemanager ?nodemanager --2. 在hadoop02上运?jps指令,会多出有如下进程 ?nodemanager --3. 在hadoop03上运?jps指令,会多出有如下进程 ?nodemanager
3. webui查看
?http://192.168.10.101:8088/
?3.10? 集群守护进程不能开启的情况
1. 格式化集群时,报错原因 ?- 当前?户使?不当 ?- /etc/hosts?的映射关系填写错误 ?- 免密登录认证异常 ?- jdk环境变量配置错误 ?- 防?墙没有关闭 2. namenode进程没有启动的原因: ?- 当前?户使?不当 ?- 重新格式化时,忘记删除${hadoop.tmp.dir}?录下的内容 ?- ?络震荡,造成edit?志?件的事务ID序号不连续 3. datanode出现问题的原因 ?- /etc/hosts?的映射关系填写错误 ?- 免密登录异常 ?- 重新格式化时,忘记删除${hadoop.tmp.dir}?录下的内容,造成 datanode的唯?标识符不在新集群中。 4. 上述问题暴?解决办法:重新格式化 ?如果想重新格式化,那么需要先删除每台机器上的${hadoop.tmp.dir}指定路 径下的所有内容,然后再格式化:最好也把logs?录下的内容也清空,因为?志内容已 经是前?个废弃集群的?志信息了,留着也??。
|