大数据基础平台实施运维实践

举报
tea_year 发表于 2025/08/10 19:23:46 2025/08/10
【摘要】 七、 Hadoop部署区分依据学习目标 能够了解Hadoop部署的意义 能够了解不同部署模式区分依据1)要求通过部署Hadoop过程了解Hadoop工作方式,进一步了解Hadoop工作原理。2)本地模式、伪分布式、完全分布式区分依据主要的区别依据是NameNode、 DataNode、 ResourceManager、 NodeManager等模块运行在几个JVM进程、几个 机器。如下表所示...

七、 Hadoop部署区分依据

学习目标

 能够了解Hadoop部署的意义

 能够了解不同部署模式区分依据

1)要求

通过部署Hadoop过程了解Hadoop工作方式,进一步了解Hadoop工作原理。


2)本地模式、伪分布式、完全分布式区分依据

主要的区别依据是NameNode DataNode ResourceManager NodeManager等模块运行在几个JVM进程、几个 机器。如下表所示:


模式名称

各个模块占用JVM进程数

各个模块运行在几台机器上

单机

1

1

伪分布式

N

1

完全分布式

N

N

HA+完全分布式

N

N

八、单机(本地模式)部署

学习目标

w 能够了解Hadoop默认部署模式

w 能够掌握Hadoop部署软件包获取 w 能够对部署完成的Hadoop进行测试


1.1)单机部署模式介绍

. 单机(本地模式)Hadoop的默认部署模式。

当配置文件为空时, Hadoop完全运行在本地。

. 不需要与其他节点交互,单机(本地模式)就不使用HDFS ,也不加载任何Hadoop的守护进程。 该模式主要用于开发调试MapReduce程序的应用逻辑。

1.2)部署软件包获取

1.2.1 )获取hadoop软件包



 [root@localhost ~]#wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz

1.2.2)获取JDK软件包

1 [root@localhost ~]#firefox http://download.oracle.com

1.3)部署

1.3.1)jdk部署

[root@localhost ~]# tar xf jdk-8u191-linux-x64.tar.gz -C /usr/local 

 [root@localhost ~]# cd /usr/local

[root@localhost local]# mv jdk1.8.0_191 jdk

解压到指定目录后,请修改目录名称

1.3.2 hadoop部署

[root@localhost ~]# tar xf hadoop-2.8.5.tar.gz -C /opt 

[root@localhost ~]# cd /opt

[root@localhost opt]# mv hadoop-2.8.5 hadoop

解压至指定目录后,请修改目录名称

1.3.3 Linux系统环境变量

 [root@localhost ~]# vim /etc/profile

export JAVA_HOME=/usr/local/jdk

export HADOOP_HOME=/opt/hadoop

export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:$PATH 


1.3.4)应用测试

1.3.4.1 )加载环境变量

1 [root@localhost ~]# source /etc/profile


1.3.4.2 )测试hadoop可用性

[root@localhost ~]# mkdir /home/input

[root@localhost ~]# cp /opt/hadoop/etc/hadoop/*.xml /home/input

[root@localhost ~]# hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount /home/input/ /home/output/00

[root@localhost ~]# cat /home/output/00/*

输出目录中有_SUCCESS文件说明JOB运行成功, part-r-00000是输出结果文件。


1.3.4.3 )词频统计练习

要求

1. 制作 一个文件,里面包含10-20不同的或部分相同的单词。

2. 使用wordcount方法实现单词出现频率统计。

九、伪分布式部署

学习目标

w 能够了解伪分布式部署模式 w 能够正确修改配置文件

w 能够掌握YARN架构及架构角色功能

w 能够对已部署的Hadoop集群进行应用测试


1)伪分布式部署模式介绍

Hadoop守护进程运行在本地机器上,模拟一个小规模的的集群。

. 该模式在单机模式之上增加了代码调试功能,允许你检查内存使用情况, HDFS输入/输出,以及其他的守护进 程交互。

2)获取软件包

可参考:第八节 1.2.11.2.2小节

3)修改配置文件

主要涉及的配置文件有: hadoop-env.sh mapred-env.shyarn-env.shcore-site.xml

3.1 )修改hadoop-env.sh mapred-env.shyarn-env.sh文件中JAVA_HOME参数


1 [root@localhost ~]# vim ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh

修改JAVA_HOME参数为 :

export JAVA_HOME=/usr/local/jdk

修改 mapred-env.sh、yarn-env.sh

3.2)修改core-site.xml


绑定主机名和域名

[root@hadoop ~]# vim /etc/hosts

...

192.168.57.50 hd1

[root@hadoop ~]# vim ${HADOOP_HOME}/etc/hadoop/core-site.xml


(1) 配置fs.defaultFS,配置FS部署的节点

<property>
     <name>fs.defaultFS</name>
     <value>hdfs://hd1:8020</value>
</property>

(2) 配置hadoop临时目录


<property>
   <name>hadoop.tmp.dir</name>
   <value>/opt/data/tmp</value>
</property>


配置临时目录前,请先创建此目录,不创建也可以。

HDFSNameNode数据默认都存放这个目录下,查看 *-default.xml等默认配置文件,就可以看到很多依赖     ${hadoop.tmp.dir} 的配置。

默认的 hadoop.tmp.dir /tmp/hadoop-${user.name} ,此时有个问题就是NameNode会将HDFS的元数据存 储在这个/tmp目录下,如果操作系统重启了,系统会清空/tmp目录下的东西,导致NameNode元数据丢失, 是个非常严重的问题,所有我们应该修改这个路径。


3.3)配置hdfs-site.xml


1 [root@localhost ~]# vim ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml


<property>

<name>dfs.replication</name>

<value>1</value>

</property>

dfs.replication配置的是HDFS存储时的备份数量,因为这里是伪分布式环境只有一个节点,所以这里设置为 1

3.4)格式化hdfs

[root@localhost ~]# hdfs namenode -format

格式化是对HDFS这个分布式文件系统中的DataNode进行分块,统计所有分块后的初始元数据的存储在 NameNode中。

格式化后,查看core-site.xmlhadoop.tmp.dir(本例是/opt/data/tmp目录)指定的目录下是否有了dfs目录,如 果有,说明格式化成功。

3.5)查看hdfs临时目录


1 [root@localhost ~]# ls /opt/data/tmp/dfs/name/current

fsimageNameNode元数据在内存满了后,持久化保存到的文件。 fsimage*.md5 是校验文件,用于校验fsimage的完整性。

seen_txid hadoop的版本

vession文件里保存:

namespaceID NameNode的唯一ID

clusterID:集群ID NameNodeDataNode的集群ID应该一致,表明是一个集群。


4)启动角色


请把hadoop安装目录中的sbin目录中的命令添加到/etc/prole环境变量中,不然无法使用hadoop- daemon.sh

4.1 )启动namenode


将hadoop安装目录中的sbin目录添加到/etc/profile文件中

[root@localhost ~]# vim /etc/profile

修改此配置。添加sbin目录

export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/sbin:${HADOOP_HOME}/bin:$PATH

[root@localhost ~]# . /etc/profile

[root@localhost ~]# hadoop-daemon.sh start namenode

4.2)启动datanode


1 [root@localhost ~]#hadoop-daemon.sh start datanode

4.3)验证

JPS命令查看是否已经启动成功,有结果就是启动成功了。

1 [root@localhost ~]#jps

5) HDFS上测试创建目录、上传、下载文件

5.1)创建目录

查看根目录

[root@localhost ~]# hdfs dfs -ls /

创建

[root@localhost ~]# hdfs dfs -mkdir /test

[root@localhost ~]# hdfs dfs -ls /

5.2)上传文件


[root@localhost ~]# echo “123”>1.txt

[root@localhost ~]# hdfs dfs -put 1.txt /test

[root@localhost ~]# hdfs dfs -ls /test


5.3)读取内容


1 [root@localhost ~]# hdfs dfs -cat /test/1.txt

5.4)下载文件到本地

1 [root@localhost ~]# hdfs dfs -get /test/1.txt

6)配置yarn

6.1)Yarn介绍

. A framework for job scheduling and cluster resource management.

功能:任务调度 和 集群资源管理

. YARN (Yet An other Resouce Negotiator) 另一种资源协调者

Hadoop 2.0新增加的一个子项目,弥补了Hadoop 1.0(MRv1)扩展性差、可靠性资源利用率低以及无法支持 其他计算框架等不足。

Hadoop的下一代计算框架MRv2将资源管理功能抽象成一个通用系统YARN

. MRv1 jobtrackertasktrack也不复存在,计算框架 (MR, storm, spark)同时运行在之上,使得hadoop进入

多计算框架的弹性平台时代 总结:

yarn是一种资源协调者 . mapreduce拆分而来

带来的好处:让hadoop平台性能及扩展性得到更好发挥


6.2)使用Yarn好处

在某些时间,有些资源计算框架的集群紧张,而另外一些集群资源空闲。 那么这框架共享使用一个则可以大提高

利率些集群资源空闲。 维护成本低。

数据共享。 避免了集群之间移动数据。


YARN 主从架构

o ResourceManager 资源管理 o NodeManager 节点管理


o ResourceManager

负责对各个NodeManager 上的资源进行统一管理和任务调度。 o NodeManager

在各个计算节点运行,用于接收RMApplicationsManager 的计算任务、启动/止任务、和RM Scheduler 汇报并协商资源、监控并汇报本节点的情况。



6.3) 配置mapred-site.xml

默认没有mapred-site.xml文件,但是有个mapred-site.xml.template配置模板文件。复制模板生成mapred- site.xml

[root@localhost ~]# cd /opt/hadoop/etc/hadoop

[root@localhost ~]# cp mapred-site.xml.template mapred-site.xml

[root@localhost ~]# vim mapred-site.xml

<property>

<name>mapreduce.framework.name</name> <value>yarn</value>

</property>

指定mapreduce运行在yarn框架上。

6.4)配置yarn-site.xml

[root@localhost ~]# vim yarn-site.xml

<property>

<name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value>

</property> <property>

<name>yarn.resourcemanager.hostname</name> <value>hd1</value>

</property>

yarn.nodemanager.aux-services配置了yarn的默认混洗方式,选择为mapreduce的默认混洗算法。 yarn.resourcemanager.hostname指定了Resourcemanager运行在哪个节点上。


6.5)启动yarn

启动yarn之前要保证NameNode和DataNode启动


[root@localhost ~]# jps


如果没有发现DataNode和NameNode。则启动

[root@localhost ~]# hadoop-daemon.sh start namenode

[root@localhost ~]# hadoop-daemon.sh start datanode

1 [root@localhost ~]# yarn-daemon.sh start resourcemanager
1 [root@localhost ~]# yarn-daemon.sh start nodemanager
1 [root@localhost ~]# jps

6.6)YARNWeb页面

YARNWeb客户端端口号是8088 ,通过http://IP:8088可以查看。


6.7)测试

Hadoopshare 目录里,自带了一些jar包,里面带有一些mapreduce实例小例子,位置在

share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar ,可以运行这些例子体验刚搭建好的Hadoop 平台,我们这里来运行最经典的WordCount实例。

# hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount /test /output/00


# hdfs dfs -ls /output

6.7.1)创建目录

[root@localhost ~]# hdfs dfs -mkdir -p /test/input

[root@localhost ~]# vim /opt/data/wc.input

tom jime

hadoop hive

hbase hadoop tom

创建原始文件:

在本地/opt/data目录创建一个文件wc.input,内容如下:

tom jime

hadoop hive

hbase hadoop tom


6.7.2) 上传文件

wc.input文件上传到HDFS/test/input目录中:

1 [root@localhost ~]# hdfs dfs -put /opt/data/wc.input /test/input

6.7.3) 运行实例

[root@localhost ~]#yarn jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount /test/input /test/output

6.7.4)查看输出结果

 [root@localhost ~]#hdfs dfs -ls /test/output

output目录中有两个文件, _SUCCESS文件是空文件,有这个文件说明Job执行成功。

part-r-00000文件是结果文件,其中-r-说明这个文件是Reduce阶段产生的结果, mapreduce程序执行时,可 以没有reduce阶段,但是肯定会有map阶段,如果没有reduce阶段这个地方有是-m-一个reduce会产生一个part-r-开头的文件。


7)停止hadoop

[root@localhost ~]#hadoop-daemon.sh stop namenode

[root@localhost ~]#hadoop-daemon.sh stop datanode

[root@localhost ~]#yarn-daemon.sh stop resourcemanager

[root@localhost ~]#yarn-daemon.sh stop nodemanager


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。