大数据基础平台实施运维实践
七、 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.1与1.2.2小节
3)修改配置文件
主要涉及的配置文件有: hadoop-env.sh、 mapred-env.sh、yarn-env.sh、core-site.xml
3.1 )修改hadoop-env.sh、 mapred-env.sh、yarn-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>
配置临时目录前,请先创建此目录,不创建也可以。
HDFS的NameNode数据默认都存放这个目录下,查看 *-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.xml里hadoop.tmp.dir(本例是/opt/data/tmp目录)指定的目录下是否有了dfs目录,如 果有,说明格式化成功。
3.5)查看hdfs临时目录
1 [root@localhost ~]# ls /opt/data/tmp/dfs/name/current |
fsimage是NameNode元数据在内存满了后,持久化保存到的文件。
fsimage*.md5 是校验文件,用于校验fsimage的完整性。
seen_txid 是hadoop的版本
vession文件里保存:
namespaceID :NameNode的唯一ID。
clusterID:集群ID ,NameNode和DataNode的集群ID应该一致,表明是一个集群。
4)启动角色
请把hadoop安装目录中的sbin目录中的命令添加到/etc/profile环境变量中,不然无法使用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)读取内容
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的 jobtracker和tasktrack也不复存在,计算框架 (MR, storm, spark)同时运行在之上,使得hadoop进入
了多计算框架的弹性平台时代。 总结:
yarn是一种资源协调者 . 从mapreduce拆分而来
带来的好处:让hadoop平台性能及扩展性得到更好发挥
6.2)使用Yarn好处
在某些时间,有些资源计算框架的集群紧张,而另外一些集群资源空闲。 那么这框架共享使用一个则可以大提高
利率些集群资源空闲。 维护成本低。
数据共享。 避免了集群之间移动数据。
YARN 主从架构
o ResourceManager 资源管理 o NodeManager 节点管理
o ResourceManager
负责对各个NodeManager 上的资源进行统一管理和任务调度。 o NodeManager
在各个计算节点运行,用于接收RM中ApplicationsManager 的计算任务、启动/停止任务、和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 nodemanager
1 [root@localhost ~]# jps
6.6)YARN的Web页面
YARN的Web客户端端口号是8088 ,通过http://IP:8088可以查看。
6.7)测试
在Hadoop的share 目录里,自带了一些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
- 点赞
- 收藏
- 关注作者
评论(0)