到年底了,想着总结下所有知识点好了~今年应用的知识点还是很多的~

  

Hadoop生态圈:

  1、文件存储当然是选择Hadoop的分布式文件系统HDFS,当然因为硬件的告诉发展,已经出现了内存分布式系统Tachyon,不论是Hadoop的MapReduce,Spark的内存计算、hive的MapReuduce分布式查询等等都可以集成在上面,然后通过定时器再写入HDFS,以保证计算的效率,但是毕竟还没有完全成熟。

  2、那么HDFS的文件存储类型为SequenceFile,那么为什么用SequenceFile呢,因为SequenceFile文件是Hadoop用来存储二进制形式的key-value对而设计的一种平面文件,能够加速MapReduce文件的读写。但是有个问题,SequenceFile文件并不保证其存储的key-value数据是按照key的某个顺序呢存储的,同时不支持append操作

    当然,如果选择Spark的话,文件存储格式首选为列式存储parquet,因为一个Parquet文件是由一个header以及一个或多个block块组成,以一个footer结尾。header中只包含一个4个字节的数字PAR1用来识别整个Parquet文件格式。文件中所有的metadata都存在于footer中。footer中的metadata包含了格式的版本信息,schema信息、key-value paris以及所有block中的metadata信息。footer中最后两个字段为一个以4个字节长度的footer的metadata,以及同header中包含的一样的PAR1。不像sequence files以及Avro数据格式文件的header以及sync markers是用来分割blocks。Parquet格式文件不需要sync markers,因此block的边界存储与footer的meatada中,查询效率非常快。

  3、zookeeper的作用帮助Yarn实现HA机制,它的主要作用是:

  (1)创建锁节点,创建成功的ResourceManager节点会变成Active节点,其他的切换为StandBy.

  (2)主备切换,当Active的ResourceManager节点出现异常或挂掉时,在zookeeper上创建的临时节点也会被删除,standy的ResourceManager节点检测到该节点发生变化时,会重新发起竞争,直到产生一个Active节点。(这里会有个脑裂问题,后续说明),那么zookeeper的参数包含在zoo.cfg中(具体参考本博客中的zookeeper配置)

4、Yarn组件:这个可就大了,运行在独立的节点上的ResourceManager和NodeManager一起组成了yarn的核心,构建了整个资源管理平台。ResourceManager提供应用程序的调度,每个应用程序由一个ApplicationMaster管理,以Container的形式请求每个任务的计算资源。Container由ResourceMangaer调度,由每个节点的NodeManager上进行本地的管理。 所有MapReduce以及Spark的Job都是提交给Yarn进行资源申请。(具体参考博客Hadoop on Yarn各组件详细原理),那么权限与资源控制主要依赖于Yarn的标签机制,可以控制比如Spark作业在Spark的资源队列,Hadoop作业在Hadoop的资源队列。
5、Hive组件:Hive的ETL主要用于数据的清洗与结构化,可从每日将传统数据库中导出的文件,创建一个Web工程用来读入文件,使用JDBC的方式连接HiveServer2,进行数据的结构化处理。这里有一些加快效率但是会占用更多资源的参数,比如set hive.exec.parallel=true,该参数会让那些存在并发job的sql运行的更快,但同时消耗更多的资源,或者set hive.exec.parallel.thread.number,加大并行度,但会占用更多的map和reduce的资源。
6、Hbase组件:HBase的服务器体系结构遵从简单的主从服务器架构,它由HRegion服务器(HRegion Service)群和HBase Master服务器(HBase Master Server)构成。Hbase Master服务器负责管理所有的HRegion服务器,而Hbase中所有的服务器是通过Zookeeper来进行协调,并处理HBase服务器运行期间可能遇到的错误的。那么从应用上来说,hbase使用的场景更适用于,例如流处理中的日志记录的单条记录追加,或是单条结果的查询,但对于需要表关联的操作,hbase就变得力不从心了,当然可以集成于hive,但查询效率嘛。。。
Hbase最重要的是rowkey的设计,怎样预分区能够让数据均匀散列在各个节点。同时,要注意的是使用hbase过滤器的话,依旧会scan全表。
7、Hue组件:主要是前台的查询,它支持很多可视化的展示啊,sql查询啊。方便一般的数据分析人员使用。
8、Ambari组件:各个组件都可以集成于它,属于一个统一的监控软件,包括安装部署,参数调整都可以在Ambari界面完成。
Spark的生态圈组件:
我们选用的是集成于Hadoop的spark on Yarn模式:
下面一一介绍Spark On Yarn的各组件:
1、SparkSql组件:从Spark 1.0版本起,Spark开始支持Spark SQL,它最主要的用途之一就是能够直接从Spark平台上面获取数据。并且Spark SQL提供比较流行的Parquet列式存储格式以及从Hive表中直接读取数据的支持
之后,Spark SQL还增加了对JSON等其他格式的支持。到了Spark 1.3 版本Spark还可以使用SQL的方式进行DataFrames的操作。我们通过JDBC的方式通过前台业务逻辑执行相关sql的增删改查,通过远程连接linux对文件进行导入处理,使项目能够初步支持Spark平台,现如今已支持Spark2.0.2版本。
它拥有自己的sql解析引擎Catalyst,提供了提供了解析(一个非常简单的用Scala语言编写的SQL解析器)、执行(Spark Planner,生成基于RDD的物理计划)和绑定(数据完全存放于内存中)。使用ThriftServer连接后台SparkSQL,它是一个JDBC/ODBC接口,通过配置Hive-site.xml,就可以使前台用JDBC/ODBC连接ThriftServer来访问SparkSQL的数据。ThriftServer通过调用hive元数据信息找到表或文件信息在hdfs上的具体位置,并通过Spark的RDD实现了hive的接口。加快前台的查询或者限制后台ETL数据清洗时所占用的资源与内存数量。
2、SparkStreaming组件:SparkStreaming接收实时输入数据流并将它们按批次划分,然后交给Spark引擎处理生成按照批次划分的结果流。SparkStreaming提供了表示连续数据流的高度抽象的被称为离散流的Dstream,可以使用kafka、Flume和Kiness这些数据源的输入数据流创建Dstream,也可以在其他Dstream上使用map、reduce、join、window等操作创建Dsteram。Dstream本质上呢,是表示RDD的序列。 那么它的适用场景在于准实时的日志分析,或数据接入处理。
3、SparkR: 我表示。。没用过~~~~啊哈哈哈~(后续学习)
4、SparkML:包含用于机器学习或数据分析的算法包。在Spark后台批处理代码中,或SparkStreaming中都可以集成,用于更多的数据分析。(后续学习)
总结:
整个Hadoop生态圈与Spark生态圈的批处理应用流程就可以整理出来了:
1、首先由每日从传统数据库中导出的数据文件,由Spark后台处理代码进行数据的处理,或由用Java编写的前台代码连接thrift进行数据的结构化。
2、通过Spark连接mysql数据表,进行后台数据处理生成各平台需要的数据类型与种类导入Hbase、Redis或生成Hive表等等。
3、由数据分析人员运用R或ive或SparkR、ML进行数据分析。
4、sparkStreaming通过接受kafka的数据,进行数据处理或分析,也可以通过监听HDFS文件目录来进行数据的定时处理。
实时项目组件:
实时项目呢,主要包含的组件有Storm、Redis、Kafka、Jetty、Netty,keepalive,nignx等。(图木有画哈哈),那么下来一一进行说明。
1、Redis: Redis包括集群模式、哨兵模式、由Twemproxy实现的代理模式。主要服务于实时系统的数据加载,并且将大部分系统配置信息都存入Redis,,走全内存可以使每条消息的延迟降低。因为Redis没有分布式锁,可以使用setnx标志位来实现分布式锁的功能。
2、jetty:轻量级的servlet,可部署多份,每份里面接入网管发送的数据,数据的存储可存储与BlockingQueue中,由多个线程拉取数据,进行数据的预处理。
3、ngnixkeepalive:keepalive的作用主要用于设置虚拟IP,ngnix进行消息的负载均衡,发送至各服务器的jetty。
4、kafka: Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。
一个Topic可以认为是一类消息,每个topic将被分成多个partition(区),每个partition在存储层面是append log文件。任何发布到此partition的消息都会被直接追加到log文件的尾部,每条消息在文件中的位置称为offset(偏移量),offset为一个long型数字,它是唯一标记一条消息。它唯一的标记一条消息。kafka并没有提供其他额外的索引机制来存储offset,因为在kafka中几乎不允许对消息进行“随机读写”
 kafka和JMS(Java Message Service)实现(activeMQ)不同的是:即使消息被消费,消息仍然不会被立即删除.日志文件将会根据broker中的配置要求,保留一定的时间之后删除;比如log文件保留2天,那么两天后,文件会被清除,无论其中的消息是否被消费.kafka通过这种简单的手段,来释放磁盘空间,以及减少消息消费之后对文件内容改动的磁盘IO开支.
那么继续我们的流程,又Jetty接入的消息,发送至不同的kafka主题,供下面storm进行消费。
5、Storm:主要的编程概念:spoutblottopology,我们需要根据数据的并发量来决定启动多少个worker和calc,首先由Spout进行消息的接入,进行数据预处理与加载,刚才我们说了,走全内存,直接走Redis,但是如果Redis挂掉了怎么办呢,那么就备选用hbase~blot中实现主要的业务逻辑,消息的封装啊。 这里需要注意的是,我们不要把所有类型的事件都写入一个topo,那么消息延迟的概率会很大,对于不同的事件进行不同消息的封装处理。
总结:
对于整个实时项目需要注意的就是数据的封装与解析,怎样提高效率,怎样能够让各个模块儿解耦,走全内存、日志收集及问题等等。
 辅助组件:
1、Ansible:ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置批量程序部署批量运行命令等功能。
2、ganglia:Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmondgmetad以及一个Web前端。主要是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。

大数据全体系年终总结相关推荐

  1. 如何快速全面建立自己的大数据知识体系? 大数据 ETL 用户画像 机器学习 阅读232 作者经过研发多个大数据产品,将自己形成关于大数据知识体系的干货分享出来,希望给大家能够快速建立起大数据

    如何快速全面建立自己的大数据知识体系? 大数据 ETL 用户画像 机器学习 阅读232  作者经过研发多个大数据产品,将自己形成关于大数据知识体系的干货分享出来,希望给大家能够快速建立起大数据产品的体 ...

  2. 【大数据】企业级大数据技术体系概述

    目录 产生背景 常见应用场景 企业级大数据技术框架 数据收集层 数据存储层 资源管理与服务协调层 计算引擎层 数据分析层 数据可视层 企业级大数据技术实现方案 Google 大数据技术栈 Hadoop ...

  3. 收藏!一张图帮你快速建立大数据知识体系

    简介: 对海量数据进行存储.计算.分析.挖掘处理需要依赖一系列的大数据技术,而大数据技术又涉及了分布式计算.高并发处理.高可用处理.集群.实时性计算等,可以说是汇集了当前 IT 领域热门流行的 IT ...

  4. 沣西新城大数据产业园:打造大数据全生态链

    据测算,到2020年,我国大数据产业的产值将超过两万亿元.大数据已经是陕西西咸新区信息产业的先导.位于西咸新区信息产业园内的国内首个专业大数据产业园区沣西新城大数据产业园正在如火如荼地建设中.该园区面 ...

  5. 第一章 阿里大数据产品体系

    1.大数据基础知识 什么是数据分析? 数据分析是基于商业目的,有目的的进行收集.整理.加工和分析数据,提炼有价值信息的过程. 数据分析流程:需求分析明确目标➡️数据收集加工处理➡️数据分析数据展现➡️ ...

  6. 【赵渝强老师】阿里云大数据ACP认证之阿里大数据产品体系

    阿里大数据产品体系是基于阿里云飞天平台上的数据处理服务.主要分为阿里云大数据基础产品和阿里云数加平台,其产品架构图如下所示: 一.阿里云大数据基础产品 1.云数据库--RDS(ApsaraDB for ...

  7. 阿里巴巴年薪800k大数据全栈工程师成长记

    阿里 大数据全栈工程师一词,最早出现于Facebook工程师Calos Bueno的一篇文章 - Full Stack (需fanqiang).他把全栈工程师定义为对性能影响有着深入理解的技术通才.自 ...

  8. 大数据治理工程师_大数据治理体系的思考,究竟能为大数据工程师行业带来什么,原来!!!...

    [摘要]近几年大数据为人类社会做出了很多贡献,而治理就成为了一个规范大数据发展的准则,其中比较吸引网友注意的就是大数据治理体系的思考,这对于大数据行业究竟意味着什么,是否能成了保证大数据领域安全的一把 ...

  9. 政府大数据治理体系的框架及其实现的有效路径

    政府大数据治理体系的框架及其实现的有效路径 安小米1,2,郭明军1,洪学海3,魏玮1 1 中国人民大学信息资源管理学院,北京 100872 2 数据工程与知识工程教育部重点实验室(中国人民大学),北京 ...

最新文章

  1. java calendar与date_Java中date和calendar的用法
  2. oracle job相关
  3. 第 8 章 容器网络 - 061 - flannel 的连通与隔离
  4. Taro+react开发(19)--arr声明const报错
  5. stylus之其余参数(Rest Params)
  6. as my sql 后面加表达式_SQL.WITH AS.公用表表达式(CTE)(转)
  7. 【Rényi差分隐私和零集中差分隐私(差分隐私变体)代码实现】差分隐私代码实现系列(九)
  8. 让现有的Git分支跟踪一个远程分支?
  9. EasyUI:Tabs 标签页/选项卡
  10. 牛客网——复杂字符串排序
  11. AJAX网页抓取工具 Krabber 0.2.9正式发布
  12. 【逗老师带你学IT】Amazing啊,Zoom落地企业内网IPPBX解决方案,ZOOM可以打国内电话了
  13. Java操作图片大全
  14. python价格预测模型_Python 机器学习教程: 预测Airbnb 价格(2)
  15. 激光测距仪行业报告-产能、产量、销量、销售额、价格及未来趋势
  16. GitCode 加速同步 GitHub
  17. cad调了比例因子没反应_CAD制图初学入门技巧:将CAD图形缩放为指定尺寸
  18. vscode 最详细的调试
  19. 华为云早报 印度政府拟要求 Google、Facebook 等在本地存储数据
  20. 跳槽找工作避坑指南(2019最新新版)

热门文章

  1. 百度搜索技巧语法大全
  2. 自定义服务器控件 继承不到父类/基类的 SupportsEventValidation 特性.
  3. Python天天美味(28) - urlopen
  4. Saas 平台,多域名,泛域名.如何做分站点的统计之解决方案
  5. 在ECS上使用Windows “跨区卷”、“条带卷”讨论以及扩容操作
  6. Oracle教程之四招提高Oracle位图索引的使用效果
  7. 【翻译】SQL Server索引进阶:第三级,聚集索引
  8. 学C++走游戏方向,是不是非常艰难自找苦吃?
  9. Laravel教程 一:安装及环境配置
  10. Hadoop之父Doug Cutting