hadoop集群搭建及yarn集群分布式计算


启动hdfs集群并测试:
1、格式化文件系统
[hadoop@master01 ~]$ hdfs namenoad -format
2、启动分布式稳步系统dfs.sh脚本
[hadoop@master01 software]$ start-dfs.sh
jdk中的jps命令查看java进程
kill -9 +进程号:强制中断进程

 

 


启动yarn集群并测试(资源调度---存储,网络和计算,属于守护线程):
1、分布式计算,先启动dfs.sh集群,在启动yarn集群(用jps查看进程)
[hadoop@master01 software]$ start-yarn.sh


观察HDFS集群状态信息:
http://192.168.29.130:50070
查看yarn集群状态信息:
http://192.168.29.130:8088

停止yarn集群
[hadoop@master01 software]$ stop-yarn.sh
停止hdfs集群
[hadoop@master01 software]$ stop-dfs.sh

上传集群文件
[hadoop@master01 install]$ hdfs dfs -put initNetwork.sh /test/
下载集群中文件
[hadoop@master01 software]$ hdfs dfs -get /test/initNetwork.sh

mv命令修改或者移动
同目录下就是改名
不同目录下就是移动
[hadoop@master01 software]$ hdfs dfs -mv /test/test2/user01 /test/test2/user02

 

[root@CloudDeskTop test]# jar
用法: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
选项包括:
-c 创建新的归档文件
-t 列出归档目录
-x 从档案中提取指定的 (或所有) 文件
-u 更新现有的归档文件
-v 在标准输出中生成详细输出
-f 指定归档文件名
-m 包含指定清单文件中的清单信息
-e 为捆绑到可执行 jar 文件的独立应用程序
指定应用程序入口点
将类封装成jar文件
[root@CloudDeskTop test]# jar -cvfe Test.jar Test Test.class
运行jar文件的两种方式:第一种要求在封装时用到-e添加主类
[root@CloudDeskTop test]# java -jar Test.jar
[root@CloudDeskTop test]# java -classpath Test.jar Test

内存不足:
----------------
1、将java.class源码打包成jar格式
  2、上传到master01,关闭top
3、[hadoop@master01 test]$ /install/java.sh -classpath HDFSDemo.jar -libs Hadoop2.7.3/ -main com.bunfly.bigdata.hdfs.main.HdfsMain

 

HDFS原理(分布式存储):

在启动hdfs集群或yarn集群时,master节点主动链接所有的slave节点并在节点上启动相应的进程(DN(datenode)/NM(nodeManage)链接的方式是通过SSH通道来完成
HDFS的读与写原理:
写操作流程:
A、客户端会将写入的数据进行分块和切片,每一个分块的大小默认是128MB(hadoop2.x之前是64MB)
B、客户端==>Master节点,并将分块信息(块的尺寸和块的数量)提交上去,Master节点接收到写操作请求之后,会为每一个分块分配存储地址,并将分块之后的信息包装成块字典对象返回给客户端,块字典如下:客户端得到的就是Map中的值
key value
fileFullName Map(blockCode,list<addr,..(地址列表)..>)
SNN(secondNameNode)被称为二级名称节点,他的主要作用:
1、合并元数据
2、备份元数据

 

 

客户端链接yarn集群进行分布式计算(都是通过端口RPC链接运行):
----------------------------------
1、client---->master(申请运行job,链接的是RM进程)
2、master---->client(返回jobId和资源地址:提交的jar文件存放地址,配置信息conf地址,每个副本的spilt分配信息)
3、client---->slave03(根据资源地址链接slave节点,上传资源--job.jar/job.conf/job.spilt)
4、client---->master(反馈上传资源完成)
5、master---->slave03(读取之前上传的资源信息,根据资源信息生成job对象,并将job对象放入job队列--master缓存区(job1,job2....))
------资源分配过程
6、slave01--->master(slave主动链接master去领取自己的job,之间用NodeManage==ResourceManage进程)
7、slave01--->slave03(根据领取的jobId,从资源地址下载job资源信息到本地(尤其是job.jar))
8、slave01--->master(反馈资源下载完成,所有slave都要反馈)
--------master启动MapReduce进程
9、master在slave中寻找负载清闲的节点(例slave02),并在其上启动MRAPPMaster进程,同时slave02上会出现MapReduce进程
10、slave02---->master(申请运行MapReduce进程)
---------master从此开始等待跟踪Task的运行过程
11、master---->slave02(返回Task(一个job有多个Task,一个Task就是一个进程)与地址的映射表--告知哪些节点运行MapTask,哪些运行ReduceTask)
12、slave02--->slave03(链接相应的slave并在其上启动相应的Task)
--------Task进程跑完会将YarnChild进程结束信息反馈给master
13、Task----->master(反馈Task进程(名字叫:YarnChild)运行完毕,所有进程都要反馈)
-------都反馈完毕
14、slave02--->master(反馈job运行完成)
--------master关闭MapReduce进程
15、master--->client(反馈job运行结束--1、环节出错,job运行失败,2、成功运行结束)

MapReduce
-----------
MapTask-->磁盘:将文件中读取到的内容放进本地磁盘
任务数量根据数据集的大小分片决定
---------中间过程排序Shuffe洗牌(经过繁琐的网络IO,通过HTTP的get方式下载)
ReduceTask-->不设置默认任务数量为1,得到MapTask过来的key值和value数组

原文地址:https://www.cnblogs.com/pandazhao/p/8031486.html