大数据的研究-big data

Hadoop部分



第四条,第五句
description: "大数据软件:了解Hadoop(HDFS,MAP REDUCE),了解Spark"


big data
大数据(Big Data)已经飞檐走壁,人工智能(Artificial Intelligence)开始侵入你生活的杂沓角落,深度学习(Deep Learning)是这个变革年代彪悍的领导者。

大数据挖掘DT数据分析
DT(Data Technology)是数据处理技术
IT时代是以自我控制、自我管理为主;
DT时代,它是以服务大众、激发生产力为主的技术。
大数据(DT)的搜集、发掘、商业化之间的竟争,谁掌握了更丰厚的出行大数据,谁就有更多的变现机会以及更高的估值。

目前Hadoop的核心技术包括Common、HDFS、MapReduce以及Yarn四大模块。共同构成了Hadoop的基础架构。

Hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。

ss

Hadoop

HDFS,MAP REDUCE

Spark
hadoop(分布式计算)生态圈的理解:
(HDFS,MapReduce,HBASE,zookeeper,hive,sqoop,flume,kafka,yarn,spark)



HDFS				分布式文件系统(Hadoop Distributed File System)
MAP REDUCE 多核处理;映射化简;地图减少
(Sahara Elastic Map Reduce 大数据部署;荒野  有弹性的  地图 减小;)

HBASE,
zookeeper,动物园管理员
hive,蜂巢
sqoop,
flume,水槽
kafka,卡夫卡
yarn,纱
spark火花

<center><font color=red size=72>颜色</font></center>

ss

Hadoop Common

Common是Hadoop的基础模块,主要为生态系统中其他的软件提供包括文件系统、RPC以及串行化库等功能在内的支持,为云平台提供基本服务。

Hadoop Common是在Hadoop0.2版本之后分离出来的HDFS和MapReduce独立子项目的内容,是Hadoop的核心部分,能为其他模块提供一些常用工具集,如序列化机制、Hadoop抽象文件系统FileSystem、系统配置工具Configuration,并且在为其平台上的软件开发提供KPI等。其他Hadoop子项目都是以此为基础而建立来的。

   
产品15个 描述
HDFS 分布式计算框架,提供存储与传输,海量数据,优点是可以在任何机器上运行,廉价,缺点是不适合太多的磁盘小文件
MapReduce 用于对海量数据的计算和分析,由map端和reduce端组成,键值对的形式
HBase 面向列的分布式数据库,可伸缩,高可靠,采用key和value的形式,key由行关键字、列关键字、时间戳组成,提供了随机实时读写
ZooKeeper 分布式协作服务,解决分布式环境下集群的管理
Hive 适用于ETL,数据仓库,分为内表和外表,通常用于分布式离线分析和分布的统计
Sqoop 关系数据ETL工具,传统数据库到hadoop之间的传输,数据的导入导出本身是MapReduce
Avro 用于支持大批量数据交换的应用,数据序列化系统
Pig 数据处理工具,在MapReduce上构建的查询语言(SQL-LIKE),适用于大量并行计算
Flume 日志收集工具,在收集的过程中会执行简单的处理,过滤和格式的转换
Ambari 集群监控与管理
Mathout 一个机器学习和数据挖掘的库
Oozie 工作流引擎
Hue Hadoop图形化界面
Chukwa 基于Hadoop集群中监控系统,WatchDog
ambari 就是创建、管理、监视 Hadoop 的集群( Hive,Hbase,Sqoop,Zookeeper等)
   

HDFS

HDFS是一个分布式文件系统,是Hadoop的存储核心,它可以被部署运行于大量的廉价服务器上,可以处理超大文件,它的设计是建立在”一次写入,多次读取的”思想之上。对于被上传到HDFS上的数据,系统会对其进行分块分进行保存,分块概念的存在是HDFS可以存储大量文件的重要原因。HDFS中有两个重要概念NameNode和DataNode,NameNode是中心服务器,负责管理文件系统命名空间以及客户端对文件的访问,DataNode是Hadoop集群的主体,一个存储节点一般运行一个DataNode进程,DataNode的作用是管理本节点上所存储的文件。

HDFS(Hadoop分布式文件系统)源自于Google的GFS论文,发表于2003年10月,HDFS是GFS的实现版。HDFS是Hadoop体系中数据存储管理的基础,它是一个高度容错的系统,能检测和应对硬件故障,在低成本的通用硬件上运行。HDFS简化了文件的一次性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适用带有数据集的应用程序。HDFS提供一次写入多次读取的机制,数据以块的形式,同时分布存储在不同的物理机器上。 HDFS默认的最基本的存储单位是64MB的数据块,和普通文件系统一样,HDFS中的文件被分成64MB一块的数据块存储。它的开发是基于流数据模式访问和处理超大文件的需求。

超大文件

超大文件:是指进行存储的文件达到MB、GB、TB级的大文件。

流式数据访问

流式数据访问:一次写入、多次读取的访问模式。

商用硬件

在节点出现故障时,HDFS会继续运行,用户不会察觉到明显的中断情况。这是由于HDFS的高可用性和容错性是通过软件来实现的,也由此使得它不需要价格高的设备来保障,大街小巷能买到的普通硬件就能用作搭建HDFS。 HDFS并不是所有场景都适用。 1)由于HDFS的优势是海量数据传输,在低延迟的数据访问中就并不适用,10ms以下的访问可以无视HDFS。HDFS会用延迟来换取数据的高吞吐量。 2)存在的小文件较多时,HDFS也不适用。这主要是由于HDFS的整个文件存储在NameNode中,它能对数据库的存储位置进行定位,因此NameNode的内存量是被文件的数量限制的。而大量的小文件会占用很大一部分内存,在进行数据处理时会合并这些小文件。 3)在多处写和随机修改的场景中,由于HDFS的文件不支持多个写入或任意位置的修改,所以HDFS也不适用。

Zookeeper

Zookeeper(分布式协作服务)源自Google的Ghubby论文,发表于2006年11月,Zookeeper是CHubby实现版。Zookeeper的主要目标是解决分布式环境下的数据管理问题,如统一命名、状态同步、集群管理、配置同步等。Hadoop的许多组件依赖于Zookeeper,它运行在计算机集群上面,用于Hadoop管理操作。

MapReduce

MapReduce是一个并行计算框架,是Hadoop的计算核心,它通过将数据分割,并行处理等底层问题进行封装,使得用户只需要考虑自身所关注的并行计算任务的实现逻辑,从而极大的简化了分布式程序的设计,在整个计算过程中,数据始终以键值对的形式存在。它的核心是Map函数与Reduce函数。对于输入数据,首先进行数据分片,然后交给Map函数进行处理,处理之后的结果进行Shuffle合并,合并之后的结果交由Reduce函数处理,最终将结果输出到HDFS上。

Yarn

Yarn是针对Hadoop存在的JobTracker单点瓶颈,编程框架不够灵活等问题提出的改进方案。通过将集群资源管理和作业管理分离开来,降低JobTracker的负载。其中集群资源管理由ResourceManager负责,作业管理由ApplicationMaster负责,Container负责为集群各个节点调度资源,与所有计算节点NodeManager共同构成新的数据计算框架。

YARN(分布式资源管理器)是下一代MapReduce,即MRv2,是在第一代MapReduce基础上演变而来的,主要是为了解决原始Hadoop扩展性差,不支持多计算框架而提出的。YARN是下一代Hadoop计算平台,是一个通用的运行时框架,用户可以编写自己的极端框架,在该运行环境中运行。

Hive

Hive(数据仓库)由Facebook开源,最初用于解决海量结构化的日志数据统计问题。Hive定义了一种类似SQL的查询语言(HQL),将HQL转化为MapReduce任务在Hadoop上执行,通常用于离线分析。HQL用于运行存储在Hadoop上的查询语句,Hive使不熟悉MapReduce开发人员也能编写数据查询语句,然后这些数据被翻译成Hadoop上面的MapReduce任务。

Pig

Pig(ad-hoc脚本)由yahoo开源,其设计动机是提供一种基于MapReduce的ad-hoc(计算query时发生)数据分析工具。Pig定义了一种数据流语言——Pig Latin,它是MapReduce编程的复杂性抽象,Pig平台包括运行环境和用于分析Hadoop数据集的脚本语言(Pig Lain)。其编译器将Pig Lain翻译成MapReduce程序序列,将脚本转换为MapReduce任务在Hadoop任务在Hadoop上执行,通常用于进行离线分析。

Sqoop

Sqoop(数据ETL/同步工具)是SQL-to-Hadoop的缩写,主要用于传统数据和Hadoop之前传输数据。数据的导入和导出本质上是MapReduce程序,充分利用了MR的并行化和容错性,Sqoop利用数据库技术描述数据架构,用于关系数据库、数据仓库和Hadoop之间转移数据。

Flume

Flume(日志收集工具)是Cloudera开源的日志系统收集系统,具有分布式、高可靠、高容错、易于定制和扩展的特点。它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持收集各种不同协议数据。同时,Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外,Flume还具有能够将日志写往各种数据目标(可定制)的能力。总的来说,Flume是一个可扩展、适合复杂环境的海量日志收集系统,当然也可以用于收集其他类型数据。

Mahout

Mahout(数据挖掘算法库)起源于2008年,最初是Apache Lucent的子项目,它在极端的时间内取得了长足的发展,现在是Apache的顶级项目。Mahout的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便、快捷地创建智能应用程序。Mahout现在已经包含了聚类、分类、推荐引擎(协同过滤)和频繁集挖掘等广大使用的数据挖掘算法。除了算法,Mahout还包含数据的输入/输出工具、与其他存储系统(如数据库、MangoDB或Cassadra)集成的数据挖掘支持架构。

Mesos

Mesos(分布式资源管理器)是一个诞生于UC Berkeley的研究项目,现已成为Apache项目,当前有一些公司使用Masos管理集群资源,如Twitter。与YARN类似,Mesos是一个资源统一管理和调度平台重点内容,同样支持诸如MR、steaming等多种运算框架。

Tachyon

Tachyon(意为超光速粒子)是以内存为中心的分布式文件系统,拥有高性能和容错能力,能够为集群框架(如Spark、Mapre)提供可靠的内存级速度的文件共享服务。Tachyon诞生于UC Berkeley的AMPLab。

Spark

Spark(内存DAG计算模型)是一个Apche项目,被标榜为“快如闪电的集群计算”,它拥有一个繁荣的开源社区,并且是目前最活跃的Apache项目。最早Spark是UC Berkeley AMP Lab所开源的类Hadoop MapReduce的通用计算框架,Spark提供了一个更快、更通用的数据处理平台。和Hadoop相比,Spark平台可以让你的程序在内存中运行时速度提升100倍,或者在磁盘上运行时速度提升10倍。

Spark GraphX

Spark GraphX最先是伯克利AMP Lab的一个分布式图计算框架项目,目前整合在Spark运行框架中,为其提供BSP大规模并行图计算能力。

Spark MLlib

Spark MLlib是一个机器学习库,它提供了各种各样的算法,这些算法用来在集群上针对分类、回归、聚类、协同过滤等。

Kafka

Kafka是Linkedin于2010年12月开源的消息系统,主要用于处理活跃的流式数据。活跃的流失数据在Web网站应用中非常常见,这些数据包括网站的PV(Page View),用户访问了什么内容,搜索了什么内容等,这些数据通常以日志的形式保存下来,然后每隔一段时间进行一次统计处理。

Apache Pheonix

Apache Pheonix是HBase的SQL驱动(HBase SQL接口),Pheonix使得HBase支持通过JDBC的方式进行访问,并将你的SQL查询换成HBase的扫描和相应的动作。

简而言之,Hadoop提供了一个可靠的共享存储和分析系统。HDFS实现存储,而MapReduce实现分析处理。纵然Hadoop还有其它功能,但这两部分是它的核心。

Spark核心技术

​ Spark的最主要的核心技术是RDD即弹性分布式数据集,此外还包括Spark有向无环图DAG,Spark部署模式以及Spark架构。 ​ 3.1 RDD:RDD是对分布式内存数据的一个抽象,对数据的所有操作最终会转换成对RDD的操作,RDD是数据操作的基本单位。对于RDD的操作分为Transformation(转换)和Action(执行),其中Transformation又包括多种基本操作例如map、filter、flatmap、groupByKey、reduceByKey、union等操作,Action操作包括count、collect、reduce等基本操作,Spark对于两种操作采取不同机制,对于所有的转换操作都是惰性操作,即从一个RDD通过转换操作生成另一个RDD的过程在Spark上并不会被马上执行,只有在Action操作触发时,转换操作才会被真正执行。 ​ 3.2 DAG:在一个Spark应用当中,数据执行流程是以RDD组成的有向无环图DAG的形式存在,Spark根据用户提交的应用逻辑,绘制DAG图,并且依据RDD之间的依赖关系,将DAG图划分成不同阶段(stage),但是DAG绘制完成之后并不会被马上执行,只是起到一个标记数据集的作用。 ​ 3.3 Spark部署模式:当前Spark存在多种部署模式,包括Local模式、Standalone模式、基于Mesos的模式以及基于Yarn的部署模式。其中基于Yarn的部署模式是当前最为主流的部署模式,其核心思想是利用HadoopYarn实现集群资源的管理。 ​ 3.4 Spark架构:尽管Spark有不同的部署模式,但是其基本组成部分包括控制节点Master和作业控制进程Driver,资源管理器ClusterManager,执行节点Worker和执行单元Executor以及客户端Client,其中Driver进程位于Master主控节点上,一个Worker节点一般维护一个Executor进程。

Hadoop 特性分析-技术特点

​ a) MapReduce具有优良的伸缩性,在Hadoop 集群当中,每当有新的计算节点加入时,MapReduce会增加该节点所具有的全部的计算能力,这是其他分布式计算框架所不具备的。 ​ b) MapReduce为用户提供了一套极为简易的编程模型,即以map 函数与reduce 函数为核心的编程接口,用户只需考虑实际应用问题的应用逻辑,而不需要考虑负载均衡,并行计算等底层细节问题,但是面对多样性的实际问题时,缺乏多样性和灵活性。 ​ c) MapReduce的设计目标是为了运行批量作业,处理海量数据,在同等大小集群下所能处理的数据量上限要远大于Spark,MapReduce是真正意义上的大数据计算框架。但在需要对数据进行随机访问时,MapReduce 明显不能满足。 ​ d) MapReduce是面向磁盘存储的,在MapReduce应用程序运行过程所有的中间数据会输出到磁盘中,当再需要时才会将数据从磁盘调入内存,因磁盘速度与内存速度的差距导致了计算过程的高延迟现象。高延迟是MapReduce 最大的技术瓶颈。 ​ e) 根据MapReduce的计算思想,在map 过程之后,框架会对中间数据进行一个统计排序(shuffle,sort),然后才将排序之后的结果交由reduce 过程处理。这种强制进行统计排序会增加计算耗时。

Spark 技术特点

​ Spark 是以MapReduce基本思想为基础,并针对MapReduce现今所存在的问题而设计开发的框架。它的提出弥补了MapReduce诸多不足之处。 ​ a) Spark 最明显优势在于它的内存计算,不同于MapReduce面向磁盘,它的数据计算在内存中完成,产生的中间数据也大部分驻留在内存中,不需要进行I/O操作,使得Spark的计算过程要远快于MapReduce。 ​ b) 弹性分布式数据集RDD作为Spark的核心技术,对调入内存数据实现了分布式抽象划分,使得Spark 不仅能够进行大数据的计算,同时也可以实现数据的随机查询与分析,弥补了MapReduce 在这方面的不足。 ​ c) 针对MapReduce计算算子的不足,Spark提出的转换与执行两大类型算子,解决这个问题,使得Spark 可以支持更为复杂的数据查询和分析任务,降低了用户开发Spark应用时的代码复杂度 ​ d) 针对MapReduce的强制排序机制,Spark进行了改进,改进了shuffle 的传输方式,提升了其稳定性和速度,并利用基本算子使得Spark 不用在所有场景中均进行排序,节省了计算耗时。 ​ e) Spark的内存计算为其带来了速度上的优势,但是在容量上,内存要远小于磁盘,MapReduce 所能处理的数据上限要远大于Spark,因此Spark 被定义为轻量级的大数据计算框架,而MapReduce是实际意义上的大数据计算框架。 ​ f) 同样由于内存计算,Spark在计算过程中,无疑会给Java虚拟机的垃圾回收机制带来严重压力,例如当两个Spark应用使用同样的数据时,那么同一份数据会被缓存两次,不但会造成较大的内存压力,同时也使得垃圾回收缓慢,从而影响Spark性能,导致其不稳定。 ​ g) 由于弹性分布式数据集的只读特性,使得Spark只适合处理粗粒度的数据并行计算,而不适合那些异步的细粒度的更新计算。 ​

总结

​ Hadoop与Spark作为目前两种针对大数据问题的解决方案,因核心技术的不同而拥有不同的特性,因此在适用场景上也有所不同,但是在大数据环境下,实际问题往往包含多种应用场景,为了解决实际问题需要Hadoop与Spark合作使用,这是当前大数据解决方案的发展趋势。 ​

参考文献

[1]王军,韩林峰,侯宾.基于Hadoop和关系型数据库的电力用采大数据混合服务架构[J].电子技术应用,2015(z1).
[2]胡俊,胡贤德,程家兴.基于Spark的大数据混合计算模型[J].计算机系统应用,2015,24(4):214-218.
[3]付东华.基于HDFS的海量分布式文件系统的研究与优化[D].北京:北京邮电大学,2012.
[4]缪璐瑶.Hadoop安全机制研究[D].南京:南京邮电大学,2015.
简介:
胡永祥(1969年6月-),男,汉族,江苏淮安人,江南大学通信控制工程硕士,江苏财经职业技术学院 教师,主要从事计算机应用领域的研究

day1


3、经验
目标:找大数据工作
方法:找猎头?求职网站?群里小伙伴互相介绍、内推?班主任老师——都属于渠道问题
策略:你准备好了么?
       准备什么?
       1) 简历——硬件:创造机会
       2) 修养——软件:把握机会
						工作前:先讲故事,再谈灵魂
						工作后:优化灵魂,讲新故事

4、开发语言:linux系统命令、python、java、c++、shell、sql、scala
     开发工具:linux、hadoop、spark、tensorflow、pytorch
     开发方式:shell、vim、IDE(idea)
     
     
5、项目:《音乐推荐系统》,大家不要过于入戏太深
=============================
Hadoop生态圈

尽可能不重复造轮子

课程整体包含3个部分
1、大数据平台(hadoop、spark)——hadoop生态圈
2、服务器开发(日志流)
3、数据挖掘(机器学习)
=============================
常见业务

1、搜索
		以前:人->内容
		现在:人->服务

大数据:人产生

音乐->物品(item)-> itemid
用户->人(user)-> userid

大数据:用户多、物品多
用户多:产生用户行为多(用户行为挖掘)
物品多:产生大量的元数据(Metadata)

元数据:物品的属性Schema(描述数据的数据)

用户行为:通过监控实时获取
物品元数据:


2、广告

搜索广告
展示广告

3、推荐

学习重点:
(1)检索/推荐系统定位
(2)架构/框架层次思维

他山之石

学习大数据,可以看哪些书?四川优就业为您分析:
1、《为数据而生》
书中分别阐述在大数据1.0、大数据2.0和大数据3.0时代下,相对应的数据分析需要做到分析、外化、集成。
2、《智能时代》
这本书作者分七章从不同角度对大数据进行介绍,分别以技术和思维方式的改变为主线,从工业革命这个角度嵌入,顺理成章的延伸出大数据与智能化,但是没有将过多笔墨放在技术的深究上,而是选择从应用层面体现大数据的理念。大数据应用则会渗透到各行各业,这正是作者的用心之处。
3、《R语言预测实战》
R语言横跨了金融、生物、医学、互联网等多个领域,主要用于统计、建模及可视化。由于上手快、效率高,备受技术人员青睐。预测是大数据挖掘的主要作用之一,借助R语言来做大数据预测,可以兼具效率与价值于一身。
4、《数据之巅》
这本书中,从小数据时代到大数据的崛起,作者以宏大的历史观、文化观、大数据观,给我们描绘了一幅数据科学、智慧文化的全景图。
5、《Hadoop权威指南》
《Hadoop权威指南(中文版)》从Hadoop的缘起开始,由浅入深,结合理论和实践,全方位地介绍Hadoop这一高性能处理海量数据集的理想工具。
6、《Hive编程指南》
《Hive编程指南》是一本Apache Hive的编程指南,旨在介绍如何使用Hive的SQL方法HiveQL来汇总、查询和分析存储在Hadoop分布式文件系统上的大数据集合。
想要成为大数据工程师,需要以下的专业技术知识:
hadoop 、spark、storm开发、hive 数据库、Linux 操作系统、分布式存储、分布式计算框架大数据处理和分析技术等等


打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦