Hadoop大数据平台概述HadoopBigdataPlatformTechnicalOverview李天生litiansheng@cqsma.cnAgenda-大纲第一部分Hadoop概述•Hadoop概述第二部分案例及组件概述•需求分析•架构设计•系统数据流程设计HDFS•MapReduce•HBase•Yarn•Zookeeper•Flume•Kafka•Hive•Hue•Spark•StructuredStreaming第三部分总结与应用•学习总结•评估应用HadoopApacheTMHadoop®OverviewHadoop-基于GSF\MapReduce\Bigtable什么是Hadoop?•开源的•可靠的•可扩展•分布式计算特点•可扩容(Scalable)•低成本(Economical)•高效率(Efficient)•高可靠(Reliable)解决问题/核心内容•海量数据存储–HDFS存海量数据动态添加资源备份(默认3备份,可自定义更多)快速恢复•海量数据分析–MapReduce核心理念:分而治之•集群资源的管理和任务调度–YARN资源管理任务调度•基础工具包–HadoopCommenHadoop–应用场景•日志分析–实时分析、离线分析MapReduce•推荐系统–网店个性推荐•GPS–实时采集数据,分析后推送到客户端•海量数据的搜集、存储、处理、分析、展示…Hadoop生态圈第二部分案例及组件概述HDFSHadoopFileSystemAdistributedfilesystemthatprovideshigh-throughputaccesstoapplicationdata.HDFS–分布式文件系统解决的问题海量数据存储-分布式架构设计分布式特点:集群,多台机器共同协作完成存储主从架构设计核心架构1.NameNode–主节点–领导文件元数据:文件名称,文件位置,副本数,所有者、组、权限,存储块,块在节点上的位置…2.DataNode–从节点–随从HDFS-文件存储架构和原理•读数据Client-NameNodeClient-DataNode•写数据Client-NameNodeClient-DataNodeMapReduceAYARN-BasedSystemforParallelProcessingofLargedatasets.MapReduce–离线计算框架核心思想–分而治之Map和ReduceMap阶段并行处理输入数据Reduce阶段对Map结果进行汇总Shuffle连接Map和Reduce阶段MapshuffleReduceShuffleMapReduce原理和过程Shuffle和MapReduce过程YarnAframeworkforjobschedulingandclusterresourcemanagementYarn-虚拟操作系统/资源调度/任务管理集群资源的管理1.主节点-ResourceManager2.从节点-NodeManager任务调度-三大进程•ResourceManager1.处理客户端请求2.启动、监控AppMaster3.监控NodeManager4.资源分配与调度•NodeManager1.节点管理2.处理来自ResManager的命令3.处理来自AppMaster的命令•ApplicationMaster1.申请资源2.监控、管理NodeManager上任务运行情况•Container-对资源的抽象和封装Yarn任务调度过程ZookeeperZookeeperisanefforttodevelopandmaintainanopen-resourceserverwhichenableshighlyreliabledistributedcoordination.Zookeeper原理•主从结构一个leader、多个follower组成的集群,Server部署要求为2N+1,N为可损坏的数量;•选举制通过内部选举,选出Leader,无需手动配置谁为主节点,谁为从节点;HBaseApacheHBase™istheHadoopdatabase,adistributed,scalable,bigdatastore.HBase特点•容量大-单表支持百亿行、百万列存储,行、列都可扩展•面向列-数据表基于列存储和权限控制,支持独立检索•数据多版本-每一个列的数据存储有多个Version•稀疏性-为空的列不占存储空间,表可以设计得非常稀疏•扩展性-依赖于HDFS,空间动态扩展•高可靠性-WAL机制、Replication机制、HDFS多副本机制•高性能-高写入(LSM、RowKey)、高读取(Region切分)HBase架构体系与设计模型HBase架构体系与设计模型HBASE分布式集群架构HBASE特点KafkaTostreamsofdatalikeamessagingsystem.什么是Kafka?三个特征•流数据-可以理解为分布式消息系统•流数据-高效,实时处理•流数据-安全-基于分布式复制集群Kafka原理Kafka任务模型FlumeFlumeisadistributed,reliable,andavailableserviceforefficientlycollecting,aggregating,andmovinglargeamountsoflogdata.Flume原理-日志采集组件采集存储模型Flume-采集分发模型大数据项目举例HiveTheApacheHive™datawarehousesoftwarefacilitatesreading,writing,andmanaginglargedatasetsresidingindistributedstorageusingSQLHive概述用于解决海量结构化数据的统计Hive是基于Hadoop的一个数据仓库工具提供类SQL语句查询(HQL);使用HDFS存储;使用MapReduce计算;通过HQL语句,实现底层MapReduce过程本质是将HQL转化成Mapper、Reducer程序灵活性和扩展性好:支持UDF,自定义存储格式等适合离线数据处理Hive与Hadoop生态系统Hive原理Hive优点与适用场景HueHueisanopensourceSQLWorkbenchforDataWarehouses.Hue概述•Cloudera公司的开源产品•与Hadoop组件集成几乎是所有Hadoop组件都支持,与HDFS集成、与Yarn集成、与Hive集成、与MYSQL集成、与HBase集成,基本就是可视化的Hadoop,带UI的Hadoop系统•丰富的可视化分析功能支持数据分析与展示,含丰富的饼图、柱状图、各种表、等数据展现形式SparkApacheSpark™isaunifiedanalyticsengineforlarge-scaledataprocessing.Spark特点ApacheSparkEcosystemSparkStreamingStructuredStreamingThekeyideainStructuredStreamingistotreatalivedadastreamasatablethatisbeingcontinuouslyappended.原理-结构化流(StructuredStreaming)编程模型举例-词频统计案例第三部分总结和应用学习小结卡夫卡大数据平台项目实战课程学习总结大数据平台学习小结•大数据平台用于处理海量数据的采集、存储、传输、查询、处理、分析、展示全过程•核心是解决海量数据的问题•大数据应用系统的开发与传统应用系统的开发没有差别在项目评估中的应用卡夫卡大数据平台项目实战课程学习在项目评估中的应用在项目评估中的应用-架构评估架构评估应包含数据源层、采集层、存储层、计算层、服务层、接口层、展示层至少应包含数据源层、存储层、计算层、服务层、接口层在项目评估中的应用-数据量评估•HDFS-最低三副本,通常是三到七副本•数据采集-合并,需要存储到磁盘•离线数据处理-Hbase需要存储到磁盘•离线数据处理-SparkSQL需要将数据放入内存•在线数据处理-Kfka消息队列需要将数据放入磁盘+内存(主要是磁盘)•在线数据处理-Spark需要将数据放入内存•在线数据处理-SparkStreaming/StucturedStreaming需要将数据存入磁盘•在线数据处理MySQL、Hbase需要将数据放入磁盘•综上,最多磁盘存储需要3+1+1+1+1=7副本,即一般情况下存储资源需求为3到7副本;内存根据业务实际需求决定,最多需要1+1+1=3副本容量在项目评估中的应用-工作量评估•数据采集-根据不同的数据源,选择合适的采集手段,合理规划部署采集工具,并与加工处理模型进行集成•数据加工-根据不同源数据,加工、转换然,使之符合处理需求,并与数据采集工具、数据分发工具进行集成•数据分发-根据业务需求,开发分发模型,并与离线数据处理工具、实时处理工具进行分发集成•离线数据预处理-根据数据类型和数据仓库(数据库)的类型,选择进行数据预处理,并与数仓(数据库)进行集成;•离线数据业务应用-基于业务的分析、处理模型开发,基于业务的数据结构开发,离线业务应用系统开发•实时数据分发给kafka消息队列系统,并与之进行集成;•Kafka消息队列系统与实时数据处理框架服务进行集成;•实时数据处理框架服务基于业务需求的数据处理分析模型开发、分析处理应用开发、与MySQL、Hbase等数据库进行集成;•基于关系型数据库的业务应用开发。在项目评估中的应用-工程师种类需求•数据采集-系统工程师、架构师•数据加工-系统工程师、开发工程师•数据分发-系统工程师、软件开发工程师•离线数据预处理-系统工程师、软件开发工程师;•离线数据业务应用-Scala工程师、数据库工程师、Java工程师•实时数据分发给kafka消息队列系统-系统工程师•Kafka消息队列系统与实时数据处理框架服务进行集成-系统工程师、Scala开发工程师、Java工程师•实时数据处理框架服务与MySQL、Hbase等数据库进行集成-系统工程师、数据库工程师、Scala工程师、Java工程师;•基于关系型数据库的业务应用开发-Java工程师。总结•大数据平台核心是解决海量数据的问题,海量数据是使用大数据平台的前提,数据量规模太小,反而会降低效率、IT成本过高,业务系统更适合采用传统的关系型数据库。•大数据平台的数据分析能力、数据处理能力、数据读写能力是建立在海量数据的前提下,传统关系型数据库无法胜任的情况下,才有优势。•并不是所有应用系统,都适合采用大数据平台Thanks!李天生litiansheng@cqsma.cn