您的位置:首页 > 大数据

大数据之初体验

2017-11-15 14:55 141 查看
     大数据的基本概念:大数据


(巨量数据集合(IT行业术语));大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

大数据的基本特征:





[b]大数据的企业架构:
[/b]
[b]


[/b]
[b]大数据的核心理念:分而治之,比如10TB的数据给一台机器处理,速度肯定比10TB的数据分配给10台机器处理来的慢。[/b]
Hadoop2.X的核心模块:






[b]HDFS分布式文件系统:
[/b]




[b]


[/b]


[b]HDFS文件系统
1、分布式-》主从架构:master/slaves
2、主节点和从节点
-》主节点:NameNode,管理
-》存储管理元数据(内存)
-》从节点:DataNode,执行
—》真正存储数据的,消耗的是机器上的磁盘
3、海量数据的文件存储,建立在很多的物理机器上,真正的数据仍然是在物理磁盘上的
4、设计理念:一次写入,多次读取(不能够修改)
5、HDFS只能一个用户写入,目前并不能多用户并发写入
6、文件系统:存储文件-》属性
-》名称
-》位置
-》副本数
-》权限
-》存储的块
-》各个块存储在哪些datanode节点上
....
-》这些文件的属性在HDFS中称作:文件的元数据(命名空间)
7、举例:HDFS存储的块默认大小:256MB
存储的文件大小:500MB
-》第一个块:256MB
-》第二个块:244MB
-》如果HDFS中某个文件块大小小于这个存储的块的大小,是不会占据整个块的存储空间的
-》多个文件是不能放到一个块中的
8、HDFS文件系统读和写:
-》读:HDFS->/tmp/file.txt
-》client-》HDFS(NameNode)
-》client-》HDFS(DataNode)
-》写:local->D盘:file.txt -》 HDFS->/tmp/
-》client-》HDFS(NameNode)
-》client-》HDFS(DataNode)
9、Hadoop中很多的组件之间的通信是根据RPC协议进行通信的(大部分情况下)
10、HDFS就近原则机制
11、HDFS不太适合存储大量的小文件
-》小文件合并
淘宝文件系统TFS-》开源 github
[/b]

HDFS架构深入
[b]  1、副本数、块的存储、主从架构、启动读取文件
2、一次写入,多次读取-》考虑到效率问题
-》写入元数据和数据本身的时候就会产生很大量的资源消耗
-》如果支持HDFS文件的修改,会增加整个系统的实现难度,会考虑其他的因素
-》高吞吐量,批量处理,不是低延迟的访问
-》HDFS有升级和回滚的机制
-》修改块的大小
<name>dfs.blocksize</name>
<value>134217728</value>
3、namenode启动过程
-》读取fsimage和edits文件
-》加载到内存
-》根据文件和目录的路径来构建整个namenode元数据命名空间的镜像-》在内存中
-》fsimage文件在初始后没有记录的一块信息
-》每一个块对应到哪些datanodes节点上
-》每个datanode在启动的时候,会对本地磁盘进行扫描
-》每个datanode会自己上面存储的所有的块的信息汇报给namenode
-》namenode接收到datanode汇报的信息,并且保存到内存中
-》所以namenode在启动的时候会有一个等待的过程
-》等待所有datanode向namenode汇报块的状态信息
-》namenode在启动的过程中,在等待的过程中是处于一个【安全模式】
-》安全模式下文件系统是处于一个只读的状态
[-safemode enter | leave | get | wait]
$ bin/hdfs dfsadmin -safemode get
$ bin/hdfs dfsadmin -safemode enter
$ bin/hdfs dfsadmin -safemode leave
-》当达到一定标准的时候就会自动离开安全模式
<name>dfs.namenode.safemode.threshold-pct</name>
<value>0.999f</value>
-》在namenode启动之后datanode与namenode之间会有持续性的保持通信
-》心跳机制,告知主节点下面的从节点是否正常运行,默认情况下是每3秒发送一次
-》时间间隔是可以用户自定义的
<name>dfs.heartbeat.interval</name>
<value>3</value>
-》如果超过这个时间点长时间没有心跳,说明这个单个节点就出现故障
-》namenode在接收到datanode的心跳之后,会有一个反馈
-》反馈的过程中,namenode会附带一些命令给到datanode
<name>dfs.namenode.stale.datanode.interval</name>
<value>30000</value>
-》单独指定edits日志文件的存放位置
<name>dfs.namenode.edits.dir</name>
<value>${dfs.namenode.name.dir}</value>
-》单独指定fsimage日志文件的存放位置
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
-》指定datanode本地磁盘存储的位置
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
-》这些属性参数在实际的工作中会比较常用
-》集群中的所有机器都会有相同的配置文件信息
[/b]

[b]Hadoop的架构
1、官网:http://hadoop.apache.org/
2、Apache-》孵化器项目-》升级到顶级项目(TM)
3、特性:
【可靠性】
-》数据的存储可靠性,机器当机的情况出现-》考虑数据是否会丢失
-》HDFS策略-》副本数,一份数据存多份,存在不同的节点上(默认情况下:3个副本数)
-》用户可以自定义副本数的个数(通过配置文件指定)
-》保证数据安全性(以硬盘作为代价进行策略操作)
-》HDFS中存储文件的形式:块block的形式存储的,块的大小,块默认大小:128MB(2.X版本)
-》用户可以自定义设置块的大小
-》Hadoop 2.x版本中块的默认大小是:128MB,Hadoop 1.x系统中块的默认大小是:64MB
-》存储的块损坏了该怎么办?-》对每个存储的文件生成一个校验码,之后在定期检测或者读取到这个块的时候又会生成一个校验码,进行匹配,如果没有匹配上说明这个块损坏
-》计算的可靠性,在计算处理的过程中出现宕机情况,数据处理是否能够继续,可以继续
【可扩展性】
-》一个集群中可能会出现若干台机器宕机损坏的情况,从机架上拿下来进行人工修复重新上架
-》或者在原本的集群数目上额外增加多台机器,比如:原本100台,追加20台
-》集群搭建的过程中扩展性是一个难点,同步一致性也是一个难点
Cloudera-》发行的版本名称:CDH版本
-》二十一世纪Google三大论文
-》GFS(谷歌文件系统)-》HDFS文件系统
-》BigTable -》HBase分布式数据库
-》MapReduce-》MapReduce计算模型

[/b]

Hadoop的Yarn框架:
[b] 
1、分布式-》主从架构:master/slaves
2、主节点:ResourceManager管理型
-》集群整体的资源情况的分配
3、从节点:NodeManager      执行行
-》首先nodemanager和datanode一般会放在一台机器上
-》datanode是消耗磁盘空间,nodemanager是消耗资源
-》集群单个节点资源都是在nodemanager
-》每个Container容器都是在不同的nodemanager节点上运行的
4、集群资源的管理和分配、多任务的调度
5、运行的很多任务
-》运行时间
-》需要资源
6、任务调度流程:
client提交job(MapReduce)-》ResourceManager
job-》map01、map02、map03
  -》每个map任务都需要有一个管理者
  -》应用管理者ApplicationMaster
-》任务的管理、监控、调度
-》MapReduce中有一个经典案例:单词统计wordcount
-》一篇文章分为多个块,对应到不同的map块,最后统计结果进行汇总
-》提交wordcount-》ResourceManager会为这个任务分配一个ApplicationMaster
-》ApplicationMaster为job任务下的map和reduce去向ResourceManager申请资源
-》每个map任务需要在一个独立的资源状态下去运行
-》在yarn中有Container的概念,可以理解为是一个容器
-》每个map任务在各自独立的Container中去运行任务
-》ResourceManager返回给ApplicationMaster的就是多个Container
-》Container起到的就是资源隔离的机制
-》所有的任务运行完成之后ApplicationMaster就会向ResourceManager提交信息
-》无论成功或者失败都会提交信息
-》如果运行失败,重新运行任务,重新提交申请,重新分配资源
-》当任务运行完成之后,任务会关闭,资源会释放
-》ApplicationMaster本身也是需要运行,也需要在Container中启动
-》YARN是在Hadoop2.x系统中才有的新的框架组件
-》原本Hadoop 0.x 或者 Hadoop 1.x版本中组件服务很少
-》HDFS+MapReduce
[/b]

[b][b]


[/b][/b]

Yarn服务功能描述: 



[b]yarn的资源管理
Apps Submitted
Apps Pending Apps Running
Apps Completed
提交的应用 等待的应用
运行的应用 完成的应用

VCores 虚拟核数-》可以当做真实的CPU核数来理解
1、物理内存的大小设置,默认是8G
<name>yarn.nodemanager.resource.memory-mb</name>

    <value>8192</value>
2、检测物理内存
<name>yarn.nodemanager.pmem-check-enabled</name>

    <value>true</value>
3、虚拟内存,倍数默认2.1倍
<name>yarn.nodemanager.vmem-pmem-ratio</name>

    <value>2.1</value>
4、CPU核数设置,默认是8核
<name>yarn.nodemanager.resource.cpu-vcores</name>

    <value>8</value>
平衡机器之间处理的速度
[/b]


[b]MapReduce分布式计算框架:
1、一个计算框架需要有一个输入和一个输出
2、input数据输入-》map处理-》shuffle -》 reduce处理-》output结果输出
[/b]
[b][b]


[/b][/b]


MapReduce计算模型

1、计算过程抽象到两个函数
-》map()
-》reduce()
2、input -> map -> shuffle -> reduce -> output  ->提交yarn
-》MapReduce可以没有reduce部分,但是必须要有map部分
3、MapReduce可以编写一个固定的模板格式
4、键值对<keyvalue>-》整个程序的流向形式
-》输入数据如何转换为<keyvalue>
-》map如何来处理<keyvalue>
-》reduce如何来处理<keyvalue>
5、以单词统计wordcount为例:
hadoop mapreduce<keyvalue><0,hadoop mapreduce>
hadoop spark
<keyvalue>
hadoop hive
<keyvalue>
hello hadoop
<keyvalue>
hive hbase
<keyvalue>
shanghai beijing<keyvalue>
-》MR框架本身有一个默认的实现
-》一行就是一个<keyvalue>
-》key是偏移量
-》value是这一行的值
-》分割单词,看有多少个单词
<0,hadoop mapreduce> -》分割   hadoop  mapreduce
-》统计单词出现的次数,出现一次就记录一次
-》<hadoop,1> <mapreduce,1>
-》<hadoop,1> <spark,1>
-》<hadoop,1> <hive,1>
-》reduce阶段-》将相同key的value放在一起
-》放到一个集合中<hadoop,list(1,1,1)>  -》 values
-》reduce默认情况下数目只有一个,根据实际的业务可以设置多个


MapReduce的编程模板
1、map和reduce都分别需要继承两个基类,Mapper和Reducer
-》两个函数map()和reduce()
2、还有一个上下文context,封装了很多东西,便于编程
3、MapReduce模板分为三大块
Mapper区
map()
Reducer区
reduce()
Driver区
job
4、in代表的是输入,out代表输出
Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>四个参数代表四个类型
5、Hadoop有自己的基本数据类型,和Java相似
-》Hadoop的基本数据类型都需要继承一个叫做writable的接口
-》字符串类型就是Text,封装好了
6、map的输出就是reduce的输入



编写单词统计wordcount程序
1、数据输入map到文件中去一行行读取文件内容<keyvalue>
2、本地测试和运行yarn,一个适合查看结果集,一个测试环境
3、yarn上运行必须打jar包,打jar包过程中一定注意需要指定主类,main class
$ bin/yarn jar wordcount.jar /user/ds/mapreduce/input /user/ds/mapreduce/output4






内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: