1、大数据职业发展方向 一、大数据的概念及特点: 大数据本身就是一个很抽象的概念,提及大数据很多人也只能从数据量上去感知大数据的规模,大数据被定义为“代表着人类认知过程的进步,数据集的规模是无法在可容忍的时间内用目前的技术、方法和理论去获取、管理、处理的数据。 大数据不是一种新技术,也不是一种新产品,而是一种新现象,是近来研究的一个技术热点。大数据具有以下4个特点,即4个“V”: (1) 数据体量(Volumes) 巨大。大型数据集,从TB级别,跃升到PB级别。 (2) 数据类别(Variety) 繁多。数据来自多种数据源,数据种类和格式冲破了以前所限定的结构化数据范畴,囊括
2、了半结构化和非结构化数据。 (3) 价值(Value) 密度低。以视频为例,连续不间断监控过程中,可能有用的数据仅仅一两秒钟。 (4) 处理速度(Velocity) 快。包含大量在线或实时数据分析处理的需求,1秒定律。最后这一点也是和传统的数据挖掘技术有着本质的不同。物联网、云计算、移动互联网、车联网、手机、平板电脑、PC以及遍布地球各个角落的各种各样的传感器,无一不是数据来源或者承载的方式。 二、大数据处理流程: 从大数据的特征和产生领域来看,大数据的来源相当广泛,由此产生的数据类型和应用处理方法千差万别。但是总的来说,大数据的基本处理流程大都是一致的。整个处理流程可以概
3、括为四步,分别是采集、导入和预处理、统计和分析,最后是数据挖掘。 三、大数据分解结构: 第一层面是理论,理论是认知的必经途径,也是被广泛认同和传播的基线。我会从大数据的特征定义理解行业对大数据的整体描绘和定性;从对大数据价值的探讨来深入解析大数据的珍贵所在;从对大数据的现在和未来去洞悉大数据的发展趋势;从大数据隐私这个特别而重要的视角审视人和数据之间的长久博弈。 第二层面是技术,技术是大数据价值体现的手段和前进的基石。我将分别从云计算、分布式处理技术、存储技术和感知技术的发展来说明大数据从采集、处理、存储到形成结果的整个过程。 第三层面是实践,实践是大数据的最终价值体现。
4、 。 四、大数据相关的技术: 1、云技术——大数据常和云计算联系到一起,因为实时的大型数据集分析需要分布式处理框架来向数十、数百或甚至数万的电脑分配工作。可以说,云计算充当了工业革命时期的发动机的角色,而大数据则是电。 2、分布式处理技术:——分布式处理系统可以将不同地点的或具有不同功能的或拥有不同数据的多台计算机用通信网络连接起来,在控制系统的统一管理控制下,协调地完成信息处理任务-这就是分布式处理系统的定义。 目前最常用的是Hadoop技术,Hadoop是一个实现了MapReduce模式的能够对大量数据进行分布式处理的软件框架,是以一种可靠
5、高效、可伸缩的方式进行处理的。 Hadoop用到的一些技术有: HDFS: Hadoop分布式文件系统(Distributed File System) - HDFS (HadoopDistributed File System) MapReduce:并行计算框架 HBase: 类似Google BigTable的分布式NoSQL列数据库。 Hive:数据仓库工具。 Zookeeper:分布式锁设施,提供类似Google Chubby的功能。 Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。 Pig:大数据分析平台,为用户提供多种接口。 Am
6、bari:Hadoop管理工具,可以快捷的监控、部署、管理集群。 Sqoop:用于在Hadoop与传统的数据库间进行数据的传递。 3、存储技术——大数据可以抽象的分为大数据存储和大数据分析,这两者的关系是:大数据存储的目的是支撑大数据分析。 4、感知技术——大数据的采集和感知技术的发展是紧密联系的。以传感器技术,指纹识别技术,RFID技术,坐标定位技术等为基础的感知能力提升同样是物联网发展的基石。 五、大数据人才方向: 目前,大数据方面主要有五大人才方向: ※ 大数据核心研发方向(系统研发); ※ 大数据性能调优方向; ※ 大数据挖掘、分析方向; ※ 大数据运维、云计算方
7、向 ※ 数据分析师方向(CDA、CPDA) 大数据是一项基于Java的分布式架构技术,用来管理及分析海量数据。 大数据核心研发(系统研发)方向: 基础课程篇: 1、 Java——基础课程(大数据任何方向必学内容) 2、 Linux基础——基础课程(大数据任何方向必学内容) 3、 Shell编程——从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。 软件语言篇: 4、 Hadoop——是一个开发和运行处理大规模数据的软件平
8、台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算。 5、 HDFS 6、 YARN 7、 MapReduce 8、 ETL(数据仓库技术) 9、 Hive(数据仓库工具) 10、Sqoop 11、Flume 12、HBase 13、Storm 14、Scala 15、KafkaMQ 16、Spark 17、Spark核心源码剖析 18、CM管理 19、CDH集群 HDFS Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件
9、系统。 全 称: Hadoop Distributed File System 简 称: hdfs 实 质: 分布式文件系统 作 用: 作为Apache Nutch的基础架构 特 点: 高容错性 适 用: 大规模数据集 原 理: HDFS就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件, 等等。HDFS是Hadoop兼容最好的标准文件系统,因为Hadoop是一个综 合性的文件系统抽象,所以HDFS不是Hadoop必须的。所以也可以理解为 Hadoop是一个框架,HDFS是Hadoop中的一个部件。 优 点:1)存储超大文件,存储文件为
10、TB,甚至PB; 2)流式数据读取,一次写入多次读取,是最高效的访问模式; 3)商用硬件,设计运行普通的廉价的PC上。 缺 点:1)数据访问延迟高,设计于大吞吐量数据的,这是以一定的延迟为代价; 2)文件数受限,存储的文件总数受限于NameNode的内存容量; 3)不支持多用户写入,也不支持任意修改文件。 替代品:1)DataStax不是文件系统,而是一个开源的代码,NoSQL键/值存储,依靠 快速的数据访问。 2)CEPH 一个开源代码,是一家名为Inktank做多种存储系统的商业软件。 其特点是高性能并行文件系统。
11、 3)Dispersed Storage Network Cleversafe这一新产品将Hadoop MapReduce 与企业分散存储网络系统相融合。跨过集群完全分配元数据,也不依赖 于复制,Cleversafe认为与HDFS相比,Dispersed Storage Network的速度 更快,更可靠。 4)Lustre 是一个开发源代码的高性能文件系统,一些人声称在性能敏感 区域其可以作为HDFS的一个替代方案。 YARN Apache Hadoop YARN (另一种资源协调者)是一种新的 Hadoop 资源
12、管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。 YARN从某种那个意义上来说应该算做是一个云操作系统,它负责集群的资源管理。 实 质:一种新的Hadoop资源管理器 作 用:修复MapReduce实现里的明显不足,并对可伸缩性(支持一万个节点和二十万个 内核的集群)、可靠性和集群利用率进行了提升 缺 点:这种架构存在不足,主要表现在大型集群上。当集群包含的节点超过 4,000 个时 (其中每个节点可能是多核的),就会表现出一定的不可预测性。其中一个最大的 问题是级联故障,由于要尝试
13、复制数据和重载活动的节点,所以一个故障会通过网 络泛洪形式导致整个集群严重恶化。 优 点:大大减小了 JobTracker(也就是现在的 ResourceManager)的资源消耗,并且让监测每一个 Job 子任务 (tasks) 状态的程序分布式化了,更安全、更优美。 MapReduce MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编
14、程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 本 质:一种编程模型 用 途:大规模数据集的并行运算 特 点:分布可靠 应 用:大规模的算法图形处理、文字处理等 主要功能:1)数据划分和计算任务调度; 2)数据/代码互定位; 3)系统优化; 4)出错检测和恢复。 技术特点:1)向“外”横向扩展,而非向“上”纵向扩展 2)失效被认为是常态 3)把处理向数据迁移 4)顺序处理数据、避免随机访问数据 5)为应用开发者隐藏系统层细节 6)平滑无缝
15、的可扩展性 ETL(数据仓库技术) 用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。 ETL是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。 软件名称:Extract-Transform-Load 过 程:数据抽取、清洗、转换、装载 应 用:Informatica、Datastage、OWB、 数据集成
16、快速实现ETL 特 性:正确性、完整性、一致性、完备性、有效性、时效性和可获取性等几个特性。 影响特性原因:业务系统不同时期系统之间数据模型不一致;业务系统不同时期业务过程有变化;旧系统模块在运营、人事、财务、办公系统等相关信息的不一致;遗留系统和新业务、管理系统数据集成不完备带来的不一致性。 转换过程:1)空值处理:可捕获字段空值,进行加载或替换为其他含义数据,并可根据字段空值实现分流加载到不同目标库。 2)规范化数据格式:可实现字段格式约束定义,对于数据源中时间、数值、字符等数据,可自定义加载格式。 3)拆分数据:依据业务需求对字段可进行分解 4)验证数据正确性:可利用
17、Lookup及拆分功能进行数据验证 5)数据替换:对于因业务因素,可实现无效数据、缺失数据的替换。 6)Lookup:查获丢失数据 Lookup实现子查询,并返回用其他手段获取的缺失字段,保证字段完整性。 7)建立ETL过程的主外键约束:对无依赖性的非法数据,可替换或导出到错误数据文件中,保证主键唯一记录的加载。 功能特点:1)管理简单 2)标准定义数据 3)拓展新型应用 Hive(数据仓库工具) hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
18、Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。 兼容性: hadoop生态圈 依 赖: jdk,hadoop 定 义: 在 Hadoop 上的数据仓库基础构架 适 用: Hive 构建在基于静态批处理的Hadoop 之上,Hadoop 通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此,Hive 并不能够在大规模数据集上实现低延迟快速的查询。 特 性:1)支持索引,加快数据查询。 2)不同的存储类型,例如,纯文本文
19、件、HBase 中的文件。 3)将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时间。 4)可以直接使用存储在Hadoop 文件系统中的数据。 5)内置大量用户函数UDF 来操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF 函数来完成内置函数无法实现的操作。 6)类SQL 的查询方式,将SQL 查询转换为MapReduce 的job 在Hadoop集群上执行。 体系结构:1)用户接口——用户接口主要有三个:CLI,Client 和 WUI 2)元数据存储——Hive 将元数据存储在数据库中,如 mysql、derby
20、 3)解释器、编译器、优化器、执行器——解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后由 MapReduce 调用执行。 Sqoop Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据 导进到关系型数据库中。 特 点:可以通过hadoo
21、p的mapreduce把数据从关系型数据库中导入数据到HDFS。 flume Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚 合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时, Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。 中文名:水槽 特 点:聚合和传输的系统 实 质:孵化项目——是经济方面的用于,一项鉴定成功,付诸实施的项目。 功 能:1)日志收集; 2)数据处理 HBase HBase是一个分布式的、面向列的开源数据
22、库,一个结构化数据的分布式存储系统。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。 结 构:分布式存储系统 优 点:HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸 缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。 模 型:逻辑模型——主要从用户角度出发; 物理模型——主要从实现Hbase的角度来讨论; Storm Storm是一个分布式的,可
23、靠的,容错的数据流处理系统。它会把工作任务委托给不同类型的组件,每个组件负责处理一项简单特定的任务。Storm集群的输入流由一个被称作spout的组件管理,spout把数据传递给bolt, bolt要么把数据保存到某种存储器,要么把数据传递给其它的bolt。 优 点:1)简单的编程模型。类似于MapReduce降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性。 2)可以使用各种编程语言。你可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。要增加对其他语言的支持,只需实现一个简单的Storm通信协议即可。 3)容错性。Storm会
24、管理工作进程和节点的故障。 4)水平扩展。计算是在多个线程、进程和服务器之间并行进行的。 5)可靠的消息处理。Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。 6)快速。系统的设计保证了消息能得到快速的处理,使用ØMQ作为其底层消息队列。 7)本地模式。Storm有一个“本地模式”,可以在处理过程中完全模拟Storm集群。这让你可以快速进行开发和单元测试。 缺 点:1)单调乏味性; 2)脆弱性; 3)可伸缩性差; 使用性:Storm有许多应用领域
25、包括实时分析、在线机器学习、信息流处理、连续性的计算、分布式RPC、ETL等。 术 语:Storm的术语包括Stream、Spout、Bolt、Task、Worker、Stream Grouping和Topology。 同 品:可以和Storm相提并论的系统有Esper、Streambase、HStreaming和Yahoo S4。其中和Storm最接近的就是S4。 Scala Scala是一门多范式的编程语言,一种类似java的编程语言,设计初衷是实现可 伸缩的语言、并集成面向对象编程和函数式编程的各种特性。 类 型
26、编程语言 特 性:1)面向对象风格; 2)函数式风格; 3)更高层的并发模式; 4)轻量级的函数语法——高阶、嵌套、局部套用(Currying)、匿名; 5)与XML集成——可在Scala程序中直接书写XML; 可将XML转换成Scala类; 6)与JAV无缝的互操作; KafkaMQ Kafka MQ是一个高吞吐量分布式消息系统。Kafka就跟这个名字一样,设计非常独特。 性
27、 质:高吞吐量分布式消息系统; 架 构:消息的持久化和缓存; 特 性:1)通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以 TB的消息存储也能够保持长时间的稳定性能。 2)高吞吐量:即使是非常普通的硬件,也可以支持每秒数十万的消息。 3)支持通过kafka服务器和消费机集群来分区消息。 4)支持Hadoop并行数据加载。 目 的:提供一个发布订阅解决方案,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合
28、来解决。 设计理念:持久化消息、高吞吐量、consumer决定消息状态、系统中各个角色都是分布式集群、consumer有逻辑组的概念。 Spark Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用并行框架, Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果 可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器 学习等需要迭代的MapReduce的算法。 基 于:MapReduce算法实现的分布式计算 特 点:1)自动容错 2)位置感






