大数据基础学做饭培训班班学多久可以?

您所在的位置:
零基础学员去哪里学习大数据培训比较好
零基础学员去哪里学习大数据培训比较好
发布时间:
编辑:薛永青
零基础学员去哪里学习大数据培训比较好
随着互联网的不断发展,企业对于大数据人才的需求也越来越大,不少同学都想**培训进入到大数据行业。于是许多没有大数据基础的同学就会有这个疑问:没有基础怎么选择大数据培训?有适合零基础的培训机构吗?为此北京教育联展网小编就来向大家介绍一下魔据教育用以保障零基础学员高薪就业的几大教学体系吧!
零基础学员去哪里学习大数据培训比较好
随着互联网的不断发展,企业对于大数据人才的需求也越来越大,不少同学都想**培训进入到大数据行业。于是许多没有大数据基础的同学就会有这个疑问:没有基础怎么选择大数据培训?有适合零基础的培训机构吗?为此北京教育联展网小编就来向大家介绍一下魔据教育用以保障零基础学员高薪就业的几大教学体系吧!
一.专业的大数据课程研发团队
一套完整的大数据课程体系无疑是一个培训机构**重要的东西之一,不是从网上随便找一个大数据课程大纲就可以充当一个培训机构的大数据课程的,它是需要一支专业的大数据研发团队**对企业和学生的调研和对大数据知识体系的充分理解,制定出一套既能满足企业的需求,又能让学生充分吸收的大数据课程。目前国内大数据培训机构大部分都没有专门的大数据课程研发团队,只是培训机构内的老师草草的订一个课程大纲,然后就开始凭自己的理解开班讲课了,这样的大数据课程自然是不够专业的;有的培训机构有自己的研发团队,但这个团队算上教学总监只有3-5个人,研发力量有些单薄,造成的后果就是大数据课程体系相对单薄。
魔据教育斥重资建立了一支30人左右的研发团队,专门研发大数据课程。研发人员都是从事IT教学行业数十年,具有丰富的行业经验和教学经验。充分调研了企业和学员的需求和习惯,课程既能符合企业的用人需求,也能保证学员全方位的掌握大数据课程。因此,魔据教育也被大家公认为大数据培训课程研发标准制定者。
二.为零基础同学量身打造的大数据课程体系
一个科学合理的大数据课程对于一个零基础想学大数据的同学来说,是十分重要的。太高屋建瓴的大数据课程学生学不会,但是太简陋单薄的大数据课程学生又学不到什么东西。有的大数据培训机构的课程基本上都是java知识,大数据知识只是皮毛,这样的课程体系是根本学不好大数据的。
魔据教育有一套为大数据零基础同学量身打造的大数据课程体系,这套课程从**基础Java语言到高端的项目实战阶段全部都有涉及到,具体细化到大数据的每一个知识点,让学生从零开始学习大数据,只要学生上课能够跟着老师认真学习,零基础照样能学好大数据。
魔据教育已经成功的让无数的零基础学员成功高薪就业,这些学生曾经学习的专业五花八门,和大数据没有丝毫的关系,在经过魔据教育的培训以后,迅速成长,现在都在国内一线互联网公司工作,已然成为了国内大数据行业的中流砥柱。
三.严格的教务管理制度
为了在短期时间内就能让学生熟练掌握大数据的知识技能,一个严格完善的教学管理制度是非常重要的。有的学生可能因为年纪比较小,上课的时候精力不够集中,作业也不能按时完成,这时如果没有一个严格的教学制度,那学生不就都“放羊了”?有的培训机构可能就是以收钱为目的,只要学生交了钱,你学不学都是你的事情,实际上这是非常不负责任的事情,对学生不负责任,对自己同样不负责任。既然学生来了,不管用什么方法,都必须让学生学好知识,无忧就业,这是每一个大数据培训机构承诺的事,也是必须完成事。
魔据有严格的教务制度,会对学员进行阶段性的学习情况考核,每个阶段至少考核3次;每天会有课后作业,必须保质保量的完成,以便检查学生对于当天课程内容的掌握。另外严格的教务制度不仅仅只针对学生,老师也是同样如此,全天候的陪伴学生,方便为学生指导问题,不能随便离开教学基地。同时,这里是一对一辅导,相当于多位讲师服务于一人。
四.实力雄厚的师资团队
老师对于一个大数据培训机构的重要性不言而喻,虽说老师领进门,学习在个人,但不可否认,老师的教导是学生能否学好大数据的基石,尤其是像大数据这种相对来说比较难的技术。对于大数据培训而言,老师的要求必须是具有丰富的大数据研发经验,但是现在市面上的大数据培训机构的老师,很多都是从Java培训转型过去的,以前并没有从事过大数据相关的研究,匆匆忙忙便开了个班,边学边教,这样,想来学生学习的大数据效果也不是太好。
魔据教育目前已经建立了一支130的师资团队,其中的老师都具有3年以上的大数据开发经验,更是具有十几年的项目开发经验,实力雄厚。其中大部分的老师都是来自国内一线互联网企业,深受学员们的信赖与爱戴。
魔据教育大数据开发高薪就业班课程大纲
一阶段 基础课程(301课时)
课程内容详解
Java基础课程
java编程语言基础(35学时)
主要讲解java环境变量搭建,jvm虚拟机运行原理性能参数调整,java基本数据类型,流程控制,数组应用等。
java面向对象编程(70学时)
主要讲解java类和对象的概念,OOP面向对象编程思想,程序设计,构造方法,以及面向对象三大特性,类与类之间的关系,接口、抽象类final,static等关键字,以及多态,异常。
各种常用API(21学时)
主要讲解String以及StringBuffer等。
java集合框架(28学时)
主要讲解整个集合框架体系内容,ArrayList,LinkedList,HashMap等。
I/O流技术(14学时)
主要讲解I/O流基本知识,流操作的基本步骤,字节流,字符流,文件操作以及文件加密,解密,文件复制,文件拆分合并等相关知识,序列化和反序列化。
java线程以及锁(14学时)
主要讲解介绍java线程的基本操作和相关知识;了解锁和死锁的概念以及效果,如何建立生产消费者模型。
Socket网络编程和分布式基础原理(7学时)
主要讲解介绍java基于网络的一些操作和特性,以及各种协议。
关系型数据库MySql
Mysql数据库(35学时)
主要讲解SQL语句相关方面的知识,数据库的操作的基本流程,以及一些常见的企业开发中涉及到的业务方面的数据设计知识以及一些数据库设计工具的使用;基本SQL操作(增,删,改,查,函数,条件查询,排序,递归查询等操作),表和表之间的关系配置,以及一些常用的企业开发数据库设计技巧,如权限管理等表结构设计,视图,分区,索引。
JDBC(7学时)
主要讲解jdbc相关的知识,jdbc基本操作,预处理命令,批处理,jdbc缓存技术,以及jdbc封装思想和数据库连接池技术的开发和应用。
Web开发课程
Jsp/Servlet(35学时)
主要讲解一些简单的jsp和servlet应用, 保证学生能够使用基本的增删改查。
Linux操作系统
Linux简介(4学时)
主要了解什么是操作系统、什么是Linux;了解Linux之前,Unix的历史;了解GNU计划;Linux的发展以及Linux的各个发行版本。
Linux环境搭建(4学时)
主要讲解Linux安装流程;理解Linux部署;理解Linux基本操作命令。
Linux常用命令(12学时)
主要讲解磁盘操作命令;权限管理命令;文件查找命令;本机帮助命令;压缩解压命令;网络相关命令;系统相关命令;vi命令。
Linux基础(3学时)
主要讲解Linux系统监测相关命令;理解crontable的使用;掌握Linux软件包的使用。
Linux网络管理(2学时)
主要讲解Linux的网络配置;掌握互联网的寻址流程和原理;掌握如何经过Window远程管理Linux服务器;掌握如何构建FTP/SSH服务应用;掌握如何实现不同系统平台之间的文件共享。
Shell脚本(6学时)
主要讲解Shell脚本结构;掌握Shell变量定义;掌握Shell基本语法;掌握Shell调试。
综合应用实操(4学时)
主要知识点串线。
第二阶段 大数据基础课程(105课时)
课程内容详解
Hadoop课程
大数据的概述(7学时)
主要讲解大数据历史;大数据出现的原因;大数据解决的问题;大数据目前的发展状态;大数据未来的;我们生活中各行业的大数据应用;云计算的概念;选择hadoop的原因;hadoop在云计算中的作用;hadoop依赖的所有技术和之前课程的联系。
hadoop集群的搭建(17.5学时)
主要讲解介绍单机版和伪分布式安装,详细介绍每个方式的区别,解决什么问题以及详细的配置,并对每个配置文件做深入讲解。能够查看hadoop进程;理解hadoop启动的整个过程。
掌握hadoop集群的搭建、HA安装(ZK);介绍并带领学生使用hadoop的命令,操作hadoop集群文件的上传、下载、删除等操作;日志错误信息、常见的错误处理方式;zookeeper的介绍与安装。
HDFS基础概念介绍(7学时)
主要讲解块的概念、块的好处、冗余备份、块的切分;元数据概念;NameNode工作原理; DataNode工作原理;Secondary NameNode;客户端含义;HDFS文件操作过程;元数据的持久化;什么是EditsLog和FSImage静像文件;EditsLog和FSImage合并--Checkpoint机制;HDFS命名空间;安全模式;心跳机制;机架感知。
HDFS API案例(7学时)
主要讲解案例包括上传本地文件到HDFS;从HDFS下载文件到本地;创建HDFS文件;创建HDFS目录;重命名HDFS文件;删除HDFS文件;删除HDFS目录;查看某个文件是否存在;数据类型,writeable接口。
YARN资源调度框架介绍(7学时)
主要讲解客户端程序与ResourceManager交互;客户端存贮封装信息;ResourceManager调用NodeManager;NodeManager划分资源池;ResourceManager调用MapReduce程序;执行运算;hadoop伪分布式安装、HA安装,加入YARN的进程,反推理论;运行MR程序,观察YARN在程序运行中的处理过程;hadoop1.0到2.0的变化(新加)。
Mapreduce介绍(7学时)
主要讲解MapReduce产生背景;MapReduce官方解释;MapReduce特点;MapReduc计算流程:inputsplit、mapper、combine、shuffle、sort、reducer;MapReduce容错性;MapReduce推测机制;MapReduce应用场合以及MR的整个流程的图解。
Mapreduce案例(28学时)
主要讲解经典的MR程序,包括(计数器、InputFormat输入格式、OutputFormat输出格式、单词计数程序Combiner优化、去重编程、平均程序、数据排序、全排序、倒排序、二次排序、单表关联、多表关联、join连接);排序算法,归并排序,底层源码分析,分区算法;讲解job提交作业的流程;经过WebUI查看log日志。
(14课时)
Zookeeper介绍和安装(3学时)
主要讲解Zookeeper介绍;Zookeeper下载与安装;Zookeeper配置。
Zookeeper集群搭建(4学时)
主要讲解搭建Zookeeper集群;选举机制及Leader测试;Zookeeper客户端操作。
Zookeeper API客户端开发(7学时)
主要讲解Zookeeper客户端API调用;Zookeeper类、Stat类介绍;创建和删除路径Path;ACL理解;CreateMode:创建模式、VERSION版本;设置数据、获取children、Watch(观察者)。
第三阶段 分布式数据库课程(95课时)
课程内容详解
HBase简介(2学时)
主要讲解HBase概念;掌握HBase旧版本体系结构;掌握HBase工作原理;掌握HBase的组成;掌握HBase的容错性;理解HBase应用场景。
HBase环境搭建(9学时)
主要讲解HBase安装流程理论;理解HBase安装模式理论;掌握HBase安装及验证理论;理解HBase基本应用操作;了解查看HBase表内容的几种方式。
掌握HBase版本选择的依据;理解HBase本地模式安装过程;熟练HBase单机模式安装的相应命令;掌握Eclipse HBase开发环境搭建过程。
理解HBase伪分布式安装流程;掌握HBase分布式安装过程;掌握Zookeeper安装过程;初识HBase常用Shell命令;初识HBase API的调用过程。
HBase开发入门(7学时)
主要讲解HBase Shell常用基本命令;掌握HBase Shell常用表管理命令;掌握HBase Shell常用表操作命令;掌握HBase API常用表数据操作开发过程;掌握HBase API常用表管理操作开发过程;掌握新旧版本HBase API调用的差异。
HBase基础API(6学时)
主要讲解HBase基础API的内容及特点;理解HBase基础API开发流程;掌握HBase新、旧二个版本下Put与Delete;理解原子性操作概述;理解Get方法相关理论知识;掌握常规操作:单行get、Result类、get列表(ListCell、RawCell)、错误列表、获取数据方法;掌握多版本的写法。
HBase高级API(5学时)
主要讲解Scan方法相关理论知识;掌握常规操作:指定行、ResultScanner类、按RowKey范围取、多版本;掌握新、旧二种版本的写法;理解过滤器相关理论知识;掌握常规操作:行、列、列名、值、分页过滤器。
综合应用(6学时)
主要讲解表设计相关理论知识;掌握表中列族的设计; 掌握表中RowKey设计;理解翻页原理。
hive入门(7学时)
主要讲解Hive产生的原因;理解HQL解析成MapReduce原理的工作流程;理解Hive体系结构;理解Hive应用场景;初步理解Hive与传统数据仓库的异同。
掌握Hive启动过程、表内容查看几种方式;掌握基本Hive命令操作知识;初步理解Java经过JDBC调用Hive的过程。
Hive环境搭建(4学时)
主要讲解Hive安装前的准备工作;理解Hive内嵌、独立、远程三种安装模式;熟练掌握Hive远程安装过程。
Hive管理(6学时)
主要讲解HiveQL数据类型及转换机制;理解Hive文本文件数据编码格式;初步了解表存储格式;熟练掌握Hive建表操作方法
熟练Java经过JDBC调用Hive过程;了解Hive的几中服务:Hive Shell、JDBC/ODBC、Thrift服务、Web接口。
HiveQL基本语法(3学时)
主要讲解存储格式;掌握创建表的语法;掌握导入数据、删除表、修改表的操作。
HiveQL查询(10学时)
主要讲解使用正则表达式来指定列;掌握列值计算、算数运算符的使用方法;掌握函数、Limit语句的使用方法;熟练列别名、嵌套Select句式;熟练CASE-When-Then句式;When语句。
熟练Group By语句用法;熟练内连接、左外连接、右外连接、半连接的用法;理解Map连接的用法。
掌握Order By、Sort By、Distribute By、Cluster By用法;掌握Union All语法。
高级应用(7学时)
主要讲解分区的原理和用法;掌握分桶的原理和用法;掌握视图的原理和用法;掌握索引的原理和用法。
Hive函数(3学时)
主要讲解Hive函数应用原因;掌握调用函数的应用过程;掌握标准函数的应用过程;掌握聚合函数的应用过程;掌握表生成函数的应用过程。
Hive自定义函数(4学时)
主要讲解编写UDF的基本语法过程;掌握编写UDAF的基本语法过程。
综合应用(16学时)
主要考核HiveQL基本应用;考核分区、分桶、视图、索引应用;考核函数,尤其是自定义函数的应用。
第四阶段 大数据高级进阶课程(207课时)
课程内容详解
简介及安装(16学时)
主要讲解Python简介、Python开发环境搭建;Python数据类型和运算符;Python条件语句
基础语法(16学时)
主要讲解Python for循环、while循环;break与continue;字符串的使用、元组的定义及使用。
函数与面向对象(16学时)
主要讲解Python中列表、元组、字典;函数的定义及使用;lambda匿名函数及应用;变量的作用域;参数的传递、类的定义、对象创建;面向对象的封装、继承、多态。
模块与IO(16学时)
主要讲解模块概念;模块用法;导入模块;IO模块的使用;日历模块的使用;异常的概念及处理。
正则表达式(16学时)
主要讲解正则表达式概念及应用场景;search和match方法;正则表达式的修饰符;正则表达式的模式;正则表达式的应用。
爬虫之分布式爬虫(21学时)
主要讲解redis简介;安装测试;多机测试;scrapy_redis;简单应用测试;多机协作的redis。
爬虫之反爬虫(14学时)
主要讲解反爬虫介绍;问题的分类;顺从的艺术;反爬虫策略;爬虫编写注意事项。
spark基础(7学时)
主要讲解Spark 概述;Spark 生态系统;与MapReduce比较;体系结构与工作原理;安装部署及测试;spark应用场景。
RDD (21学时)
主要讲解Spark程序模型;Spark弹性数据集;RDD与共享式内存区别;Spark算子分类及功能;Spark 核心算子介绍:aggregate、aggregateByKey、cartesian。
Spark核心算子:coalesce, repartition,fullOuterJoin
、cogroup [Pair], groupWith [Pair]、combineByKey[Pair] ,count,countByKey [Pair]、countByValue,distinct,filter,filterWith
(deprecated)、flat Map,flatMapValues,flatMapWith,fold,foldByKey。
Spark核心算子:groupBy、groupByKey [Pair]、intersection、join [Pair]、keys [Pair]、values[Pair]、leftOuterJoin [Pair]、map、mapPartitions、mapPartitionsWithIndex、mapValues [Pair]、max、min、reduce、reduceByKey [Pair]、rightOuterJoin、sample、sortBy、sortByKey、sum 、take、top、zip、zipWithIndex;RDD特性、常见操作、缓存策略;RDD Dependency、Stage。
spark工作机制(7学时)
主要讲解Spark应用执行机制;Spark调度与任务分配模块;容错机制及共享变量和累加器;Lineage机制;Checkpoint机制;Shuffle机制;集成开发工具开发spark程序;web监控图讲解。
spark编程实战(7学时)
主要讲解编写wordcount程序;TopK;中位数;倒排索引;Countonce;倾斜连接等程序并经过web监控图进行查看。
spark SQL(7学时)
主要讲解Spark SQL概述;DataFrame及DataSet;SparkSession的使用;编程方式执行Spark SQL查询;sparkSQL 数据源之mysql;sparkSQL 数据源之hive;sparkSQL 数据源之json。
sparkSQL运行原理(7学时)
主要讲解Spark SQL组件、架构;DataFrame、SparkSQL运行原理;SparkSQL电商日常数据分析。
电商数据项目(14学时)
主要讲解python爬虫抓取数据;解析json数据;hive建表,数据填充;SparkSQL日常分析;数据的可视化展现。
SparkStreaming基础(7学时)
主要讲解Spark Streaming运行原理;DStream;DStream 常用函数;容错处理;与flume和kafka的集成。
SparkStreaming案例(百度统计的流式实事监控系统)(14学时)
主要讲解nginx日志文件,flume采集;kafka的应用;SparkStreaming 实时分析;结果写入Mysql数据库。
Spark MLlib(7学时)
主要讲解机器学习基本认识;分类算法、聚类算法;回归算法、决策树和随机森林;K近邻算法;贝叶斯决策论;EM算法。
综合应用(4学时)
主要对重要知识点串线。
实时计算介绍和Flume基础(1.5学时)
主要介绍实时计算与离线计算区别;实时技术应用;实时分析三种框架比较;实时分析技术架构。
Flume安装和相关概念(2学时)
主要讲解Flume安装,event介绍; Flume Agent内部原理; 配置Flume Agent。
source相关配置及测试 (3.5学时)
主要讲解source的生命周期;source的配置;常用的几种source的介绍以及应用;Flume拦截器。
channel相关配置及测试 (1.5学时)
主要讲解channle作用;channle事务性;channle的种类;channle配置;Channel选择器。
sink相关配置及测试(1.5学时)
主要讲解sink作用;sink的生命周期;常用的几个sink介绍;Sink组。
复杂数据流的应用(4学时)
主要讲解多source--单channle(Fan in flow); 单source--多channle(Fan out flow);agent—agent。
Kafka介绍(2学时)
主要讲解数据的传递方式;消息中间件的优势及作用;常用的消息中间件;kafka的相关概念。
Kafka安装(5学时)
主要讲解kafka相关概念:broker、topic、生产者和消费者;kafka集群类型;kafka集群启动步骤。
Kafka生产者和消费者(7学时)
主要讲解kafka分区机制(Partition); kafka的副本数(replication);Kafka生产者API和Kafka消费者API。
flume与kafka整合(7学时)
主要讲解flume与kafka整合:kafka source、Kafka Sink、Kafka Channel。
第五阶段 大数据综合实战项目课程(课时)
项目内容详解
高校学生大数据分析项目(学时)
高校学生大数据分析系统是依托于高校数据管理平台的高校学生行为分析系统。经过对海量学生行为数据的计算和分析,建设高校完整的高校招生、教学、就业、学生学习、生活、心理的完整数据仓库。经过对这些数据的分析,提升学校对学生的管理和服务,教学资源合理分配,招生就业等各方面的精细化服务程度,达到学生和教学管理工作的前瞻性、精准性和持续性要求。
互联网精准营销大数据分析项目(学时)
电信预购分析系统是依托于电信用户上网行为数据进行预购分析的系统。经过对电信用户的海量上网行为数据的匹配与分析,建立用户的精准画像,及购买行为预测。经过这些数据的分析,提升对用户的掌握,合理推荐业务提高电信业务扩展。经过预购分析对外提供精准营销的预测用户,有效提高营销成功率。
精准画像对用户进行全面的分析,主要方面:用户状况,用户分群,用户偏好等。经过分析掌握用户状况对业务超包及时提醒升档,对不同时间段提供闲忙不同业务。经过分群划分相同用户,对不同群组进行差别推荐。经过偏好推荐定制服务(游戏包,阅读包等)。经过更人性化的推荐,进而提升业务发展。
预购分析:对用户购买欲望、购买偏好等进行数据建模分析。经过基础分析及模型算法分析用户预购类别(购房,购车等),预购类型(购房:大户型,小户型,房屋位置等。购车:轿车,SUV,价格区间等。)。分析用户购买欲望是否强烈,是近期购买还是先期了解等。
目标,建立良好的用户画像综合体系,准确描绘用户行为。经过数据分析对内提高公司总体业绩;对外提供优质服务。
咨询电话:010- 金老师 。
编辑推荐ditor recommend
oracle认证在线报名
请选择城市
本周热门点击
考试答疑微信
版权所有 深圳市诺达教育股份有限公司 (C) www.thea.cn All Rights Reserved 粤ICP备号-3当前位置: > >成都零基础学大数据需要培训多长时间
成都零基础学大数据需要培训多长时间
科多大数据从成立至今,一直致力于大数据人才培养,提供大数据应用解决方案!那么,在大数据应用解决方案这块,科多大数据主要提供大数据咨询和定制大数据应用这两块!
& &一:大数据咨询 ——前瞻性的顶层规划 标准化的咨询模型 专业化的专家团队
& &l 服务定位
& &大数据时代,数据成为潜在的财富。但是,数据金矿的挖掘并不是一件轻而易举的事情。大数据价值发现、分析和利用复杂度很高,抬高了大数据应用的门槛。为了帮助用户破解这一难题,勤智数码推出了大数据咨询服务,旨在帮助用户分析业务需求,梳理数据类型,确定分析模型,设计技术架构,选择实施路径。通过大数据解决方案的规划和设计,让用户在大数据应用中掌握主动,稳步推进。
& &2 服务目标
& &通过对用户的业务能力、数据能力和技术能力进行综合咨询,帮助用户从现有的和新的数据来源中梳理数据、设计分析模型、获取新的洞察力,并规划大数据技术架构、关键技术、分析方法,以支持大数据应用需求的落地。
& &业务能力咨询:识别业务要求和评估数据分析能力,发现数据的内在规律。
& &通过专业化的数据分析能力评估,为用户大数据应用设定起点,并规划与之相对应的措施。以深入细致的洞察来指导业务运营。
大数据近几年很火,政府层面把大数据作为国家战略,从中央到地方出台了一系列促进大数据发展的政策,各地也陆续成立了大数据部门或协会!在这一大背景下,各行业对大数据人才的需求量与日俱增,也兴起了学习大数据技术的热潮!今天,科多大数据老师就大数据分析师方向,给大家讲讲如何成为一名的大数据分析师!
培训大数据,就到成都科多大数据培训机构,成都好专业的大数据培训机构:
联系人:郑老师
为了节省您的时间,请将您要找的培训课程和具体要求填写在表格里,并留下适当的联系方法提交,我校会主动与您联系。
您还拨打热线【400- 】联系我们,或者联系我们的在线客服
友情链接:
版权所有: @copyright 2014 SOXSOK大数据的学习需要预先了解哪些基础知识?
我的图书馆
大数据的学习需要预先了解哪些基础知识?
计算机的基本工作就是处理数据,包括磁盘文件中的数据,通过网络传输的数据流或数据包,数据库中的结构化数据等。随着互联网、物联网等技术得到越来越广泛的应用,数据规模不断增加,TB、PB量级成为常态,对数据的处理已无法由单台计算机完成,而只能由多台机器共同承担计算任务。而在分布式环境中进行大数据处理,除了与存储系统打交道外,还涉及计算任务的分工,计算负荷的分配,计算机之间的数据迁移等工作,并且要考虑计算机或网络发生故障时的数据安全,情况要复杂得多。举一个简单的例子,假设我们要从销售记录中统计各种商品销售额。在单机环境中,我们只需把销售记录扫描一遍,对各商品的销售额进行累加即可。如果销售记录存放在关系数据库中,则更省事,执行一个SQL语句就可以了。现在假定销售记录实在太多,需要设计出由多台计算机来统计销售额的方案。为保证计算的正确、可靠、高效及方便,这个方案需要考虑下列问题:如何为每台机器分配任务,是先按商品种类对销售记录分组,不同机器处理不同商品种类的销售记录,还是随机向各台机器分发一部分销售记录进行统计,最后把各台机器的统计结果按商品种类合并?上述两种方式都涉及数据的排序问题,应选择哪种排序算法?应该在哪台机器上执行排序过程?如何定义每台机器处理的数据从哪里来,处理结果到哪里去?数据是主动发送,还是接收方申请时才发送?如果是主动发送,接收方处理不过来怎么办?如果是申请时才发送,那发送方应该保存数据多久?会不会任务分配不均,有的机器很快就处理完了,有的机器一直忙着?甚至,闲着的机器需要等忙着的机器处理完后才能开始执行?如果增加一台机器,它能不能减轻其他机器的负荷,从而缩短任务执行时间?如果一台机器挂了,它没有完成的任务该交给谁?会不会遗漏统计或重复统计?统计过程中,机器之间如何协调,是否需要专门的一台机器指挥调度其他机器?如果这台机器挂了呢?(可选)如果销售记录在源源不断地增加,统计还没执行完新记录又来了,如何保证统计结果的准确性?能不能保证结果是实时更新的?再次统计时能不能避免大量重复计算?(可选)能不能让用户执行一句SQL就可以得到结果?上述问题中,除了第1个外,其余的都与具体任务无关,在其他分布式计算的场合也会遇到,而且解决起来都相当棘手。即使第1个问题中的分组、统计,在很多数据处理场合也会涉及,只是具体方式不同。如果能把这些问题的解决方案封装到一个计算框架中,则可大大简化这类应用程序的开发。2004年前后,Google先后发表三篇论文分别介绍分布式文件系统GFS、并行计算模型MapReduce、非关系数据存储系统BigTable,第一次提出了针对大数据分布式处理的可重用方案。在Google论文的启发下,Yahoo的工程师Doug Cutting和Mike Cafarella开发了Hadoop。在借鉴和改进Hadoop的基础上,又先后诞生了数十种应用于分布式环境的大数据计算框架。本文在参考业界惯例的基础上,对这些框架按下列标准分类:如果不涉及上面提出的第8、9两个问题,则属于批处理框架。批处理框架重点关心数据处理的吞吐量,又可分为非迭代式和迭代式两类,迭代式包括DAG(有向无环图)、图计算等模型。若针对第8个问题提出来应对方案,则分两种情况:如果重点关心处理的实时性,则属于流计算框架;如果侧重于避免重复计算,则属于增量计算框架。如果重点关注的是第9个问题,则属于交互式分析框架。本文下面分别讨论批处理、流计算、交互式分析三种类别的框架,然后简要介绍大数据计算框架的一些发展趋势。文章最后介绍这一领域的学习资料。批处理框架HadoopHadoop最初主要包含分布式文件系统HDFS和计算框架MapReduce两部分,是从Nutch中独立出来的项目。在2.0版本中,又把资源管理和任务调度功能从MapReduce中剥离形成YARN,使其他框架也可以像MapReduce那样运行在Hadoop之上。与之前的分布式计算框架相比,Hadoop隐藏了很多繁琐的细节,如容错、负载均衡等,更便于使用。Hadoop也具有很强的横向扩展能力,可以很容易地把新计算机接入到集群中参与计算。在开源社区的支持下,Hadoop不断发展完善,并集成了众多优秀的产品如非关系数据库HBase、数据仓库Hive、数据处理工具Sqoop、机器学习算法库Mahout、一致性服务软件ZooKeeper、管理工具Ambari等,形成了相对完整的生态圈和分布式计算事实上的标准。图2. Hadoop生态圈(删减版)MapReduce可以理解为把一堆杂乱无章的数据按照某种特征归并起来,然后处理并得到最后的结果。基本处理步骤如下:把输入文件按照一定的标准分片,每个分片对应一个map任务。一般情况下,MapReduce和HDFS运行在同一组计算机上,也就是说,每台计算机同时承担存储和计算任务,因此分片通常不涉及计算机之间的数据复制。按照一定的规则把分片中的内容解析成键值对。通常选择一种预定义的规则即可。执行map任务,处理每个键值对,输出零个或多个键值对。MapReduce获取应用程序定义的分组方式,并按分组对map任务输出的键值对排序。默认每个键名一组。待所有节点都执行完上述步骤后,MapReduce启动Reduce任务。每个分组对应一个Reduce任务。执行reduce任务的进程通过网络获取指定组的所有键值对。把键名相同的值合并为列表。执行reduce任务,处理每个键对应的列表,输出结果。图3. MapReduce处理过程在上面的步骤中,应用程序主要负责设计map和reduce任务,其他工作均由框架负责。在定义map任务输出数据的方式时,键的选择至关重要,除了影响结果的正确性外,也决定数据如何分组、排序、传输,以及执行reduce任务的计算机如何分工。前面提到的商品销售统计的例子,可选择商品种类为键。MapReduce执行商品销售统计的过程大致如下:把销售记录分片,分配给多台机器。每条销售记录被解析成键值对,其中值为销售记录的内容,键可忽略。执行map任务,每条销售记录被转换为新的键值对,其中键为商品种类,值为该条记录中商品的销售额。MapReduce把map任务生成的数据按商品种类排序。待所有节点都完成排序后,MapReduce启动reduce任务。每个商品种类对应一个reduce任务。执行reduce任务的进程通过网络获取指定商品种类的各次销售额。MapReduce把同一种商品下的各次销售额合并到列表中。执行reduce任务,累加各次销售额,得到该种商品的总销售额。上面的过程还有优化的空间。在传输各种商品每次的销售额数据前,可先在map端对各种商品的销售额进行小计,由此可大大减少网络传输的负荷。MapReduce通过一个可选的combine任务支持该类型的优化。DAG模型现在假设我们的目标更进一步,希望知道销售得最好的前10种商品。我们可以分两个环节来计算:统计各种商品的销售额。通过MapReduce实现,这在前面已经讨论过。对商品种类按销售额排名。可以通过一个排序过程完成。假定商品种类非常多,需要通过多台计算机来加快计算速度的话,我们可以用另一个MapReduce过程来实现,其基本思路是把map和reduce分别当作小组赛和决赛,先计算各分片的前10名,汇总后再计算总排行榜的前10名。从上面的例子可以看出,通过多个MapReduce的组合,可以表达复杂的计算问题。不过,组合过程需要人工设计,比较麻烦。另外,每个阶段都需要所有的计算机同步,影响了执行效率。为克服上述问题,业界提出了DAG(有向无环图)计算模型,其核心思想是把任务在内部分解为若干存在先后顺序的子任务,由此可更灵活地表达各种复杂的依赖关系。Microsoft Dryad、Google FlumeJava、Apache Tez是最早出现的DAG模型。Dryad定义了串接、全连接、融合等若干简单的DAG模型,通过组合这些简单结构来描述复杂的任务,FlumeJava、Tez则通过组合若干MapReduce形成DAG任务。图4. MapReduce(左)与Tez(右)执行复杂任务时对比MapReduce的另一个不足之处是使用磁盘存储中间结果,严重影响了系统的性能,这在机器学习等需要迭代计算的场合更为明显。加州大学伯克利分校AMP实验室开发的Spark克服了上述问题。Spark对早期的DAG模型作了改进,提出了基于内存的分布式存储抽象模型RDD(Resilient Distributed Datasets,可恢复分布式数据集),把中间数据有选择地加载并驻留到内存中,减少磁盘IO开销。与Hadoop相比,Spark基于内存的运算要快100倍以上,基于磁盘的运算也要快10倍以上。图5. MapReduce与Spark中间结果保存方式对比Spark为RDD提供了丰富的操作方法,其中map、 filter、 flatMap、 sample、groupByKey、 reduceByKey、union、join、cogroup、mapValues、sort、partionBy用于执行数据转换,生成新的RDD,而count、collect、 reduce、lookup、save用于收集或输出计算结果。如前面统计商品销售额的例子,在Spark中只需要调用map和reduceByKey两个转换操作就可以实现,整个程序包括加载销售记录和保存统计结果在内也只需要寥寥几行代码,并且支持Java、Scala、Python、R等多种开发语言,比MapReduce编程要方便得多。下图说明reduceByKey的内部实现。图6. RDD reduceByKey内部实现RDD由于把数据存放在内存中而不是磁盘上,因此需要比Hadoop更多地考虑容错问题。分布式数据集的容错有两种方式:数据检查点和记录数据的更新。处理海量数据时,数据检查点操作成本很高, 因此Spark默认选择记录更新的方式。不过如果更新粒度太细太多,记录更新成本也不低。因此,RDD只支持粗粒度转换,即只记录单个块上执行的单个操作,然后将创建RDD的一系列变换序列记录下来,类似于数据库中的日志。当RDD的部分分区数据丢失时,Spark根据之前记录的演变过程重新运算,恢复丢失的数据分区。Spark生态圈的另一项目Alluxio(原名Tachyon)也采用类似的思路,使数据写入速度比HDFS有数量级的提升。下面总结Spark对MapReduce的改进:MapReduce抽象层次低,需要手工编写代码完成;Spark基于RDD抽象,使数据处理逻辑的代码非常简短。MapReduce只提供了map和reduce两个操作,表达力欠缺;Spark提供了很多转换和动作,很多关系数据库中常见的操作如JOIN、GROUP BY已经在RDD中实现。MapReduce中,只有map和reduce两个阶段,复杂的计算需要大量的组合,并且由开发者自己定义组合方式;Spark中,RDD可以连续执行多个转换操作,如果这些操作对应的RDD分区不变的话,还可以放在同一个任务中执行。MapReduce处理逻辑隐藏在代码中,不直观;Spark代码不包含操作细节,逻辑更清晰。MapReduce中间结果放在HDFS中;Spark中间结果放在内存中,内存放不下时才写入本地磁盘而不是HDFS,这显著提高了性能,特别是在迭代式数据处理的场合。MapReduce中,reduce任务需要等待所有map任务完成后才可以开始;在Spark中,分区相同的转换构成流水线放到同一个任务中运行。流计算框架流计算概述在大数据时代,数据通常都是持续不断动态产生的。在很多场合,数据需要在非常短的时间内得到处理,并且还要考虑容错、拥塞控制等问题,避免数据遗漏或重复计算。流计算框架则是针对这一类问题的解决方案。流计算框架一般采用DAG(有向无环图)模型。图中的节点分为两类:一类是数据的输入节点,负责与外界交互而向系统提供数据;另一类是数据的计算节点,负责完成某种处理功能如过滤、累加、合并等。从外部系统不断传入的实时数据则流经这些节点,把它们串接起来。如果把数据流比作水的话,输入节点好比是喷头,源源不断地出水,计算节点则相当于水管的转接口。如下图所示。图7. 流计算DAG模型示意图为提高并发性,每一个计算节点对应的数据处理功能被分配到多个任务(相同或不同计算机上的线程)。在设计DAG时,需要考虑如何把待处理的数据分发到下游计算节点对应的各个任务,这在实时计算中称为分组(Grouping)。最简单的方案是为每个任务复制一份,不过这样效率很低,更好的方式是每个任务处理数据的不同部分。随机分组能达到负载均衡的效果,应优先考虑。不过在执行累加、数据关联等操作时,需要保证同一属性的数据被固定分发到对应的任务,这时应采用定向分组。在某些情况下,还需要自定义分组方案。图8. 流计算分组由于应用场合的广泛性,目前市面上已经有不少流计算平台,包括Google MillWheel、Twitter Heron和Apache项目Storm、Samza、S4、Flink、Apex、Gearpump。Storm及Trident在流计算框架中,目前人气最高,应用最广泛的要数Storm。这是由于Storm具有简单的编程模型,且支持Java、Ruby、Python等多种开发语言。Storm也具有良好的性能,在多节点集群上每秒可以处理上百万条消息。Storm在容错方面也设计得很优雅。下面介绍Storm确保消息可靠性的思路。在DAG模型中,确保消息可靠的难点在于,原始数据被当前的计算节点成功处理后,还不能被丢弃,因为它生成的数据仍然可能在后续的计算节点上处理失败,需要由该消息重新生成。而如果要对消息在各个计算节点的处理情况都作跟踪记录的话,则会消耗大量资源。Storm的解决思路,是为每条消息分派一个ID作为唯一性标识,并在消息中包含原始输入消息的ID。同时用一个响应中心(Acker)维护每条原始输入消息的状态,状态的初值为该原始输入消息的ID。每个计算节点成功执行后,则把输入和输出消息的ID进行异或,再异或对应的原始输入消息的状态。由于每条消息在生成和处理时分别被异或一次,则成功执行后所有消息均被异或两次,对应的原始输入消息的状态为0。因此当状态为0后可安全清除原始输入消息的内容,而如果超过指定时间间隔后状态仍不为0,则认为处理该消息的某个环节出了问题,需要重新执行。图9. Storm保证消息可靠性过程示意图Storm还实现了更高层次的抽象框架Trident。Trident以微批处理的方式处理数据流,比如每次处理100条记录。Trident提供了过滤、分组、连接、窗口操作、聚合、状态管理等操作,支持跨批次进行聚合处理,并对执行过程进行优化,包括多个操作的合并、数据传输前的本地聚合等。以微批处理方式处理数据流的框架还有Spark Streaming。(1) 实时流处理(2) 微批处理图10. 实时流处理与微批处理比较下面是Storm、Trident与另外几种流计算框架的对比:交互式分析框架概述在解决了大数据的可靠存储和高效计算后,如何为数据分析人员提供便利日益受到关注,而最便利的分析方式莫过于交互式查询。这几年交互式分析技术发展迅速,目前这一领域知名的平台有十余个,包括Google开发的Dremel和PowerDrill,Facebook开发的Presto, Hadoop服务商Cloudera和HortonWorks分别开发的Impala和Stinger,以及Apache项目Hive、Drill、Tajo、Kylin、MRQL等。一些批处理和流计算平台如Spark和Flink也分别内置了交互式分析框架。由于SQL已被业界广泛接受,目前的交互式分析框架都支持用类似SQL的语言进行查询。早期的交互式分析平台建立在Hadoop的基础上,被称作SQL-on-Hadoop。后来的分析平台改用Spark、Storm等引擎,不过SQL-on-Hadoop的称呼还是沿用了下来。SQL-on-Hadoop也指为分布式数据存储提供SQL查询功能。HiveApache Hive是最早出现的架构在Hadoop基础之上的大规模数据仓库,由Facebook设计并开源。Hive的基本思想是,通过定义模式信息,把HDFS中的文件组织成类似传统数据库的存储系统。Hive 保持着 Hadoop 所提供的可扩展性和灵活性。Hive支持熟悉的关系数据库概念,比如表、列和分区,包含对非结构化数据一定程度的 SQL 支持。它支持所有主要的原语类型(如整数、浮点数、字符串)和复杂类型(如字典、列表、结构)。它还支持使用类似 SQL 的声明性语言 Hive Query Language (HiveQL) 表达的查询,任何熟悉 SQL 的人都很容易理解它。HiveQL被编译为MapReduce过程执行。下图说明如何通过MapReduce实现JOIN和GROUP BY。(1) 实现JOIN(2) 实现GROUP BY图11. 部分HiveQL操作的实现方式Hive与传统关系数据库对比如下:Hive的主要弱点是由于建立在MapReduce的基础上,性能受到限制。很多交互式分析平台基于对Hive的改进和扩展,包括Stinger、Presto、Kylin等。其中Kylin是中国团队提交到Apache上的项目,其与众不同的地方是提供多维分析(OLAP)能力。Kylin对多维分析可能用到的度量进行预计算,供查询时直接访问,由此提供快速查询和高并发能力。Kylin在eBay、百度、京东、网易、美团均有应用。SQL引擎Calcite对于交互式分析,SQL查询引擎的优劣对性能的影响举足轻重。Spark开发了自己的查询引擎Catalyst,而包括Hive、Drill、Kylin、Flink在内的很多交互式分析平台及数据仓库使用Calcite(原名optiq)作为SQL引擎。Calcite是一个Apache孵化项目,其创建者Julian Hyde曾是Oracle数据库SQL引擎的主要开发者。Calcite具有下列几个技术特点:支持标准SQL语言。支持OLAP。支持对流数据的查询。独立于编程语言和数据源,可以支持不同的前端和后端。支持关系代数、可定制的逻辑规划规则和基于成本模型优化的查询引擎。支持物化视图(materialized view)的管理。由于分布式场景远比传统的数据存储环境更复杂,Calcite和Catalyst都还处于向Oracle、MySQL等经典关系数据库引擎学习的阶段,在性能优化的道路上还有很长的路要走。其他类型的框架除了上面介绍的几种类型的框架外,还有一些目前还不太热门但具有重要潜力的框架类型。图计算是DAG之外的另一种迭代式计算模型,它以图论为基础对现实世界建模和计算,擅长表达数据之间的关联性,适用于PageRank计算、社交网络分析、推荐系统及机器学习。这一类框架有Google Pregel、Apache Giraph、Apache Hama、PowerGraph、,其中PowerGraph是这一领域目前最杰出的代表。很多图数据库也内置图计算框架。另一类是增量计算框架,探讨如何只对部分新增数据进行计算来极大提升计算过程的效率,可应用到数据增量或周期性更新的场合。这一类框架包括Google Percolator、Microsoft Kineograph、阿里Galaxy等。另外还有像Apache Ignite、Apache Geode(GemFire的开源版本)这样的高性能事务处理框架。总结与展望从Hadoop横空出世到现在10余年的时间中,大数据分布式计算技术得到了迅猛发展。不过由于历史尚短,这方面的技术远未成熟。各种框架都还在不断改进,并相互竞争。性能优化毫无疑问是大数据计算框架改进的重点方向之一。而性能的提高很大程度上取决于内存的有效利用。这包括前面提到的内存计算,现已在各种类型的框架中广泛采用。内存资源的分配管理对性能也有重要影响,JVM垃圾回收在给开发人员带来便利的同时,也制约了内存的有效利用。另外,Java的对象创建及序列化也比较浪费资源。在内存优化方面做足功夫的代表是Flink。出于性能方面的考虑,Flink很多组件自行管理内存,无需依赖JVM垃圾回收机制。Flink还用到开辟内存池、用二进制数据代替对象、量身定制序列化、定制缓存友好的算法等优化手段。Flink还在任务的执行方面进行优化,包括多阶段并行执行和增量迭代。拥抱机器学习和人工智能也是大数据计算的潮流之一。Spark和Flink分别推出机器学习库Spark ML和Flink ML。更多的平台在第三方大数据计算框架上提供机器学习,如Mahout、Oryx及一干Apache孵化项目SystemML、HiveMall、PredictionIO、SAMOA、MADLib。这些机器学习平台一般都同时支持多个计算框架,如Mahout同时以Spark、Flink、H2O为引擎,SAMOA则使用S4、Storm、Samza。在深度学习掀起热潮后,又有社区探索把深度学习框架与现有分布式计算框架结合起来,这样的项目有SparkNet、Caffe on Spark、TensorFrames等。在同一平台上支持多种框架也是发展趋势之一,尤其对于那些开发实力较为雄厚的社区。Spark以批处理模型为核心,实现了交互式分析框架Spark SQL、流计算框架Spark Streaming(及正在实现的Structured Streaming)、图计算框架GraphX、机器学习库Spark ML。而Flink在提供低延迟的流计算的同时,批处理、关系计算、图计算、机器学习,一个也没落下,目标直奔大数据通用计算平台。Google的BEAM(意为Batch+strEAM)则试图把Spark、Flink、Apex这样的计算框架纳入自己制定的标准之下,颇有号令江湖之意。Google的那几篇论文这里就不一一列出了,网上很容易搜到。其他推荐的论文如下:
TA的最新馆藏
喜欢该文的人也喜欢}

我要回帖

更多关于 学做饭培训班 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信