赞
踩
大数据是指无法在一定时间内用常规软件工具进行捕捉、管理和处理的数据集合。是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。目前大数据技术已经广泛应用于众多行业,如仓储物流、电商销售、汽车、电信、生物医学、人工智能、智慧城市等等。
1. Volume(大量)
数据单位:GB -> TB -> PB -> ZB -> YB -> BB -> NB -> DB
IDC预测,2020年全球数据达到44ZB,2025年全球数据量将达到163ZB,平均每40个月,全球数据量就会翻倍!传统的关系型数据库已经无法处理如此海量的数据。
2. Velocity(高速)
在大数据时代,数据的创建、存储、分析都需要被高速处理。如电商网站的个性化推荐,需要尽可能实时完成推荐,这也是大数据区别于传统数据挖掘的显著特征。
3. Variety(多样)
数据形式和来源多种多样,包括结构化、非结构化、半结构化的数据,有网络日志、音频、视频、图片、地理位置等等,多数据类型对数据的处理能力提出了更高的要求。
4. Veracity(真实)
必须确保数据的真实性,才能保证数据分析的正确性。
5. Value(低价值)
数据价值密度相对低,犹如淘金,数据的价值是弥足珍贵的但是需要强大的机器算法才能挖掘。
Hadoop是一个适合大数据的分布式(也就是说Hadoop一定是要搭建集群的)存储和计算平台。狭义的Hadoop是指一个框架平台,广义上讲Hadoop代表大数据的一个技术生态圈,包括很多其他软件框架。
Hadoop生态圈技术栈包括:
1. 官方文档:https://hadoop.apache.org/docs/r3.3.1/
2. github教程(推荐):https://github.com/heibaiying/BigData-Notes
3. 视频教程:https://www.bilibili.com/video/BV1Qp4y1n7EN
1. 扩容能力(Scalable)
Hadoop是在计算机集群内分配数据并完成计算任务,集群可方便的扩展数万节点。
2. 低成本(Economical)
Hadoop通过普通廉价的机器组成服务器集群来分发和处理数据。
3. 高效率(Efficient)
Hadoop可以在节点之间动态并行的移动数据,使得速度非常快。(这点是相对的)
4. 可靠性(Reliable)
自动维护数据的多份副本,并且在任务失败后能自动重新部署计算任务。
1. 不适合低延迟的数据访问
2. 不能高效存储大量小文件
3. 不支持用户写入和任意修改文件
1. Apache Hadoop(免费):http://hadoop.apache.org/
优点:开源、免费,学习非常方便,代码更新版本快
缺点:版本的升级、维护、兼容性问题
2. CloudManager(收费):https://www.cloudera.com
CloudManager通过各种补丁,实现版本之间的稳定运行,解决了版本升级困难和版本兼容性的各种问题。生产推荐使用CloudManager的CHD版本
3. HortonWorks(免费):https://hortonWorks.com
Hortonworks主要是雅虎主导的(目前被上面的Cloudera收购),核心产品HDP,免费开源,并且提供一套web管理界面HDF,方便通过界面管理集群状态,web管理界面地址:http://ambari.apache.com
Hadoop = DHFS(分布式文件系统) + MapReduce(分布式计算框架)+ Yarn(资源协调框架)+ Common(公用的模块,如RPC、Configuration、序列化机制和日志操作)
HDFS 遵循主/从架构,由单个 NameNode(NN) 和多个 DataNode(DN) 组成:
文件系统命名空间
的操作,例如打开,关闭、重命名文件和目录等。它同时还负责集群元数据的存储,记录着文件中各个数据块的位置信息。以词频统计(WordCount)为例:
input : 读取文本文件;
splitting : 将文件按照行进行拆分,此时得到的 K1
行数,V1
表示对应行的文本内容;
mapping : 并行将每一行按照空格进行拆分,拆分得到的 List(K2,V2)
,其中 K2
代表每一个单词,由于是做词频统计,所以 V2
的值为 1,代表出现 1 次;
shuffling:由于 Mapping
操作可能是在不同的机器上并行处理的,所以需要通过 shuffling
将相同 key
值的数据分发到同一个节点上去合并,这样才能统计出最终的结果,此时得到 K2
为每一个单词,List(V2)
为可迭代集合,V2
就是 Mapping 中的 V2;
Reducing : 这里的案例是统计单词出现的总次数,所以 Reducing
对 List(V2)
进行归约求和操作,最终输出。
MapReduce 编程模型中 splitting
和 shuffing
操作都是由框架实现的,需要我们自己编程实现的只有 mapping
和 reducing
,这也就是 MapReduce 这个称呼的来源。
YARN 的基本思想是将资源管理和作业调度/监控的功能拆分为单独的守护进程。
1. ResourceManager
ResourceManager
通常在独立的机器上以后台进程的形式运行,它是整个集群资源的主要协调者和管理者。ResourceManager
负责给用户提交的所有应用程序分配资源,它根据应用程序优先级、队列容量、ACLs、数据位置等信息,做出决策,然后以共享的、安全的、多租户的方式制定分配策略,调度集群资源。
2. NodeManager
NodeManager
是 YARN 集群中的每个具体节点的管理者。主要负责该节点内所有容器的生命周期的管理,监视资源和跟踪节点健康。具体如下:
ResourceManager
注册并定时发送心跳消息,等待 ResourceManager
的指令;Container
的生命周期,监控 Container
的资源使用情况;ApplicationMaster
的需要,在启动 Container
之前将需要的程序及其依赖拷贝到本地。3. ApplicationMaster
在用户提交一个应用程序时,YARN 会启动一个轻量级的进程 ApplicationMaster
。ApplicationMaster
负责协调来自 ResourceManager
的资源,并通过 NodeManager
监视容器内资源的使用情况,同时还负责任务的监控与容错。具体如下:
ResourceManager
申请资源,监控申请的资源的使用情况;4. Container
Container
是 YARN 中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。当 AM 向 RM 申请资源时,RM 为 AM 返回的资源是用 Container
表示的。YARN 会为每个任务分配一个 Container
,该任务只能使用该 Container
中描述的资源。ApplicationMaster
可在 Container
内运行任何类型的任务。例如,MapReduce ApplicationMaster
请求一个容器来启动 map 或 reduce 任务,而 Giraph ApplicationMaster
请求一个容器来运行 Giraph 任务。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。