大数据基础入门

1. 大数据产生背景

1.1. 概念的产生

  • 1980年,托夫勒在《第三次浪潮》中提到“大数据”一词
  • 2011年,麦肯锡正式定义了大数据的概念
  • 2010年后,随着互联网及云计算的发展,大数据技术开始走向实现,并进入人们的生活

1.2. 大数据的特征

  • Volume(规模):每天产生海量数据
  • Velocity(速度):数据产生的速度越来越快
  • Variety(多样):数据格式的多样性,例如文本、语音、图片等
  • Veracity(质量):数据的质量差别可以非常大
  • Valence(连接):大数据之间的联系

大数据的核心价值是预测

image

1.3. 文件系统的演进

  • 本地文件系统(LFS)- 本地硬盘
  • 网络文件系统(NFS)- 网络共享
  • 分布式文件系统(DFS)
image
image

DFS文件系统的优点:

  • 数据可扩展性(Data Scalability):存储量不够了增加磁盘阵列即可
  • 容错性(Fault Tolerance):如果主机或者机柜宕机,很难导致数据丢失,或系统停止工作
  • 高并发性(High Concurrency):并行处理数据成为可能

2. 大数据技术

2.1. 理论基础

  • 2003 Google File System
  • 2004 MapReduce: Simplified Data Processing on Large Clusters
  • 2006 Google Big Table

2.2. MapReduce

MapReduce的灵感来源于函数式语言中的内置函数Map和Reduce。简单来说,在函数式语言里,Map表示对一张列表(List)中的每个元素进行计算,Reduce表示对一张列表中的每个元素进行迭代计算。

image
  1. Input:英文单词组
  2. Map:将每个单词拆分开,并组成key-value对(Deer, 1)
  3. Shuffle:将key相同的放到一起 {Car: 1, 1, 1}
  4. Reduce:将key相同的进行累加

2.3. HADOOP

image

Hadoop是一个由Apache基金会所开发的分布式系统基础架构,其核心是HDFS和MapReduce。

2.3.1. 组件

  • Hadoop Common: The common utilities that support the other Hadoop modules.
  • Hadoop Distributed File System (HDFS™): A distributed file system that provides high-throughput access to application data.
  • Hadoop YARN: A framework for job scheduling and cluster resource management.
  • Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.

[图片上传失败...(image-2975a7-1519780100688)]

2.3.1. HDFS

image
  • NameNode:Master节点管理数据块映射;处理客户端的读写请求;配置副本策略;管理HDFS的名称空间;
  • SecondaryNameNode:保存着NameNode的部分信息,是NameNode的冷备份;
  • DataNode:负责存储client发来的数据块block;执行数据块的读写操作。

HDFS读文件流程

image
  1. 首先调用FileSystem对象的open方法获取DistributedFileSystem实例。
  2. DistributedFileSystem通过RPC获得文件第一批block的locations,同一block按照重复数会返回多个locations,距离客户端近的排在前面。
  3. 前两步会返回一个FSDataInputStream对象,该对象会被封装成 DFSInputStream对象。客户端调用read方法,DFSInputStream就会找出离客户端最近的datanode并连接。
  4. 数据从datanode源源不断的流向客户端。
  5. 如果第一个block块的数据读完了,就会关闭指向第一个block块的datanode连接,接着读取下一个block块。
  6. 如果第一批block都读完了,DFSInputStream就会去namenode拿下一批blocks的location,然后继续读,如果所有的block块都读完,这时就会关闭掉所有的流。

HDFS写文件流程

image
  1. 客户端通过调用 DistributedFileSystem 的create方法,创建一个新的文件。
  2. DistributedFileSystem 通过 RPC调用 NameNode,去创建一个没有blocks关联的新文件。创建前,NameNode 会做各种校验,比如文件是否存在,客户端有无权限去创建等。
  3. 前两步结束后会返回 FSDataOutputStream 的对象,和读文件的时候相似,FSDataOutputStream 被封装成 DFSOutputStream,DFSOutputStream 可以协调 NameNode和 DataNode。客户端开始写数据到DFSOutputStream,DFSOutputStream会把数据切成一个个小packet,然后排成队列 data queue。
  4. DataStreamer 会去处理接受 data queue,它先问询 NameNode 这个新的 block 最适合存储的在哪几个DataNode里,比如重复数是3,那么就找到3个最适合的 DataNode,把它们排成一个 pipeline。DataStreamer 把 packet 按队列输出到管道的第一个 DataNode 中,第一个 DataNode又把 packet 输出到第二个 DataNode 中,以此类推。
  5. DFSOutputStream 还有一个队列叫 ack queue,也是由 packet 组成,等待DataNode的收到响应,当pipeline中的所有DataNode都表示已经收到的时候,这时akc queue才会把对应的packet包移除掉。
  6. 客户端完成写数据后,调用close方法关闭写入流。
  7. DataStreamer 把剩余的包都刷到 pipeline 里,然后等待 ack 信息,收到最后一个 ack 后,通知 DataNode 把文件标示为已完成。

2.3.2. HADOOP中的MapReduce

[图片上传失败...(image-78f9ed-1519780100687)]

2.3.3. YARN(Yet Another Resource Negotiator)

image

YARN中任务执行过程:

image

YANR带来的好处:

  1. 减小了JobTracker的资源消耗,并且让监测每一个Job子任务(tasks)状态的程序分布式化了,更安全、更优美。
  2. 在新的Yarn中,ApplicationMaster是一个可变更的部分,用户可以对不同的编程模型写自己的AppMst,让更多类型的编程模型能够跑在Hadoop集群中。
  3. 对于资源的表示以内存为单位,比之前以剩余slot数目更加合理。
  4. MRv1中JobTracker一个很大的负担就是监控job下的tasks的运行状况,现在这个部分就扔给ApplicationMaster做了。
  5. ResourceManager中有一个模块叫做ApplicationManager,它是监测ApplicationMaster的运行状况,如果出问题,会在其他机器上重启。
  6. Container用来作为YARN的一个资源隔离组件,可以用来对资源进行调度和控制。

2.3.4. HADOOP的局限和不足

  • 抽象层次低,需要手工编写代码来完成,使用上难以上手;
  • 只提供两个操作,Map和Reduce,表达力欠缺;
  • 一个Job只有Map和Reduce两个阶段(Phase),复杂的计算需要大量的Job完成,Job之间的依赖关系是由开发者自己管理的;
  • 处理逻辑隐藏在代码细节中,没有整体逻辑;
  • 中间结果也放在HDFS文件系统中;
  • ReduceTask需要等待所有MapTask都完成后才可以开始;
  • 时延高,只适用Batch数据处理,对于交互式数据处理,实时数据处理的支持不够;
  • 对于迭代式数据处理性能比较差。

2.4. SPARK

image

专为大规模数据处理而设计的快速通用的计算引擎。

SPARK的特点:

  • 快速。比HADOOP快10-100倍。
  • 易用。可使用多种编程语言进行交互。
  • 通用。提供了SQL,流式计算,机器学习,图计算等框架。
  • 多平台运行。可运行于HADOOP、MESOS、云或单机上。
image

2.4.1. RDD(resilient distributed dataset)

一个RDD代表一个只读的可分区的分布式数据集,内部可以有许多分区(partitions),每个分区又拥有大量的记录(records)。

特征:

  • dependencies:建立RDD的依赖关系,主要rdd之间是宽窄依赖的关系,具有窄依赖关系的rdd可以在同一个stage中进行计算。
  • partition:一个rdd会有若干个分区,分区的大小决定了对这个rdd计算的粒度,每个rdd的分区的计算都在一个单独的任务中进行。
  • preferedlocations:按照“移动数据不如移动计算”原则,在spark进行任务调度的时候,优先将任务分配到数据块存储的位置
  • compute:spark中的计算都是以分区为基本单位的,compute函数只是对迭代器进行复合,并不保存单次计算的结果。
  • partitioner:只存在于(K,V)类型的rdd中,非(K,V)类型的partitioner的值就是None。

操作:

  • transformations - map, flatMap, union, ReduceByKey...
  • actions - collect, reduce, count, save, lookupKey...

action会触发真正的作业提交,而transformation算子是不会立即触发作业提交的。(惰性)

每一个 transformation() 方法返回一个新的RDD。(只读)

当遇到action算子时会触发一个job的提交,然后反推回去看前面的transformation算子,进而形成一张有向无环图。在DAG中会进行stage的划分,划分的依据是依赖是否是shuffle,每个stage又可以划分成若干task。

2.4.2. SPARK运行架构

image
  • Cluster Manager:在standalone模式中即为Master主节点,控制整个集群,监控worker。在YARN模式中为资源管理器
  • Worker Node:从节点,负责控制计算节点,启动Executor或者Driver。
  • Driver: 运行Application 的main()函数
  • Executor:执行器,是为某个Application运行在worker node上的一个进程

2.4.3. 运行流程

image
  1. 构建Spark Application的运行环境,启动SparkContext
  2. SparkContext向资源管理器(可以是Standalone,Mesos,Yarn)申请运行Executor资源
  3. Executor向SparkContext申请Task
  4. SparkContext将应用程序分发给Executor
  5. SparkContext构建成DAG图,将DAG图分解成Stage、将Taskset发送给Task Scheduler,最后由Task Scheduler将Task发送给Executor运行
  6. Task在Executor上运行,运行完释放所有资源
image

2.5. 其它大数据相关项目

  • HIVE
  • HBASE
  • STORM
  • ZOOKEEPER
  • FLUME
  • KAFKA
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容

  • 我想找个我喜欢的,喜欢我的在一起,而不是合适的。
    金针菇的眼泪阅读 132评论 0 0
  • 卧谈数小时后,在凌晨N点浅浅睡去。然而,在早晨第一缕阳光透过窗帘的缝隙射进房间时,我还是在往日起床的钟点醒来。空调...
    孟享阅读 487评论 0 0
  • 同事1:啊潮,我很快就跟李嘉诚一样了! 同事2:震惊了了一下说,光头? 大家:哈哈哈... 同事1:我在贴胶花 哈...
    天天的哈哈笑阅读 106评论 0 0
  • 阴天。骑着单车沿着城市河岸行走。 遇见桃花开落一地,驻于原地观赏,耳机里戴佩妮唱到:“若真遇见,我们应该如何是好。...
    茜草蝈蝈阅读 194评论 0 1
  • 单位草场的一年蓬正在花期,很喜欢这种白色的小花,今天正好阴天,所以带了相机来公司。 威海从春天的大旱变成了现在的雨...
    花手鞠阅读 219评论 0 1