大数额学习 第一篇——基础知识

上学过程

  1. 刺探Hadoop生态系统,了然一下生态系统中各模块的法力,随笔后边对各模块有一些粗略的下结论

    • HDFS
    • YARN
    • HBase
    • MapReduce
    • Hive
    • Pig
    • Mahout
    • Zookeeper
    • Sqoop
    • Flume
    • Kafka等
  2. 了解Spark,了解Spark比MapReduce的优势,学习RDD编程

    • Spark SQL
    • Spark Streaming
    • Spark Mlib
  3. 找两台总结机搭个Hadoop、斯帕克(Spark)集群,配置斯帕克(Spark)开发环境(SBT),运行一些demo例程,典型如WordCount

  4. 研究一下MapReduce的WordCount和斯帕克的WorkCount的代码,通过比较加深了然

  5. 参照如下案例,领悟大数目利用,熟知HBase,Hive,Sqoop等

Kafka

Kafka是由LinkedIn集团开支的一种高吞吐量的分布式发表订阅信息系统,用户通过Kafka系统可以揭穿大气的音讯,同时也能实时订阅消费音讯。
在大数目时代涌现的新的日志收集处理系列(Flume、Scribe等)往往更擅长批量离线处理,而不可能较好地协助实时在线处理。相对而言,Kafka可以同时满意在线实时处理和批量离线处理。

Kafka设计的初衷是构建一个得以处理海量日志、用户作为和网站运营总结等的数码处理框架
多年来几年,Kafka在大数据生态系统中初露扮演更加重要的遵守,在Uber、Twitter、Netflix、LinkedIn、Yahoo、Cisco、高尔德(Gold)man
Sachs等商家得到了汪洋的利用。如今,在众多商行的大数据平武汉,Kafka平常扮演数据互换枢纽的角色。

在小卖部的大数额生态系统中,可以把Kafka作为数据沟通枢纽,不同门类的分布式系统(关周详据库、NoSQL数据库、流处理系统、批处理系统等),可以统一接入到Kafka,实现和Hadoop各种零部件之间的不同序列数据的实时高效互换,较好地满意各样集团应用需求。

Hadoop结构(更新)

参照NoSQL,瓜达拉哈拉高校林子雨-大数额技术原理与使用-教材配套讲课录像-第2讲-大数量处理架构Hadoop

这部分内容请观看林子雨先生的视频,讲得相比较透彻。下边的始末是在看摄像在此之前(那会儿只看了林子雨先生的教材和博客,如林子雨先生在视频中说得,教材上的始末都是基于Hadoop1.0的,在录像中曾经更新到了2.0)写的,作为一些参照吧。

Impala

Hive
作为现有相比盛行的数据仓库分析工具之一,拿到了宽广的运用,可是出于Hive选取MapReduce
来成功批量数码处理,由此,实时性欠好,查询延迟较高。Impala
作为新一代开源大数据解析引擎,辅助实时总计,它提供了与Hive
类似的功用,并在性能上比Hive高出3~30 倍。Impala
发展势头迅猛,甚至有可能会领先Hive 的使用率而变成Hadoop
上最盛行的实时统计平台。

Hive 与Impala 的不同点总括如下:

  • 第一,Hive 相比相符进行长日子的批处理查询分析,而Impala
    适合举办实时交互式SQL 查询。
  • 其次,Hive 倚重于MapReduce 总括框架,执行计划组合成管道型的MapReduce
    任务形式举行实践,而Impala
    则把实施计划表现为一棵完整的履行计划树,可以更自然地分发执行计划到各个Impalad执行查询。
  • 其三,Hive在实施过程中,倘若内存放不下所有数据,则会采纳外存,以保证查询能挨个执行到位,而Impala在境遇内存放不下数据时,不会选用外存,所以,Impala目前处理查询时会受到一定的限制。

Hive与Impala的相同点总计如下:

  • 第一,Hive与Impala使用同一的存储数据池,都协助把数量存储于HDFS和HBase中,其中,HDFS辅助存储TEXT、RCFILE、PARQUET、AVRO、ETC等格式的数目,HBase存储表中记录。
  • 第二,Hive与Impala使用同一的元数据。
  • 其三,Hive与Impala中对SQL的诠释处理相比一般,都是通过词法分析变化执行计划。

看来,Impala的目标不在于替换现有的MapReduce工具,把Hive与Impala配合使用效果最佳,可以先拔取Hive举行多少转换处理,之后再拔取Impala在Hive处理后的结果数据集上举行快捷的数额解析。

整理一些学问(来自罗安达高校林子雨先生的博客

Tez

Tez 是Apache 开源的支撑DAG 作业的总结框架,通过DAG
作业的点子运行MapReduce
作业,提供了程序运行的完好处理逻辑,就可以去除工作流当中多余的Map
阶段,收缩不必要的操作,进步数据处理的习性。Hortonworks把Tez
应用到数据仓库Hive 的优化中,使得性能提高了约100 倍。如图15-13
所示,能够让Tez 框架运行在YARN 框架之上,然后让MapReduce、Pig 和Hive
等总括框架运行在Tez框架之上,从而借助Tez 框架实现对MapReduce、Pig
和Hive 等的特性优化,更好地解决现有MapReduce 框架在迭代划算(如PageRank
统计)和交互式总计方面存在的题目。

Tez在缓解Hive、Pig延迟大、性能低等问题的思绪,是和这个补助实时交互式查询分析的制品(如Impala、Dremel和Drill等)是例外的。Impala、Dremel和Drill的解决问题思路是舍弃MapReduce总括框架,不再将类似SQL语句的HiveQL或者Pig语句翻译成MapReduce程序,而是采用与商用并行关系数据库类似的分布式查询引擎,可以间接从HDFS或者HBase中用SQL语句询问数据,而不需要把SQL语句转化成MapReduce任务来实施,从而大大降低了推迟,很好地知足了实时查询的要求。不过,Tez则不同,比如,针对Hive数据仓库举办优化的“Tez+Hive”解决方案,仍利用MapReduce总结框架,可是对DAG的作业依赖关系展开了裁剪,并将三个小作业合并成一个大作业,这样,不仅总计量减弱了,而且写HDFS次数也会大大缩小。

Sqoop

Sqoop是一款开源的工具,紧要用以在Hadoop(Hive)与观念的数据库(mysql、postgresql…)间举行数量的传递,能够将一个关系型数据库(例如
: MySQL ,Oracle
,Postgres等)中的数据导进到Hadoop的HDFS中,也足以将HDFS的数码导进到关系型数据库中。

大数额入门

小结一下如今读书的大数量知识,紧假诺参考了大连大学林子雨先生的博客

PIG

Pig 是Hadoop 生态系统的一个零件,提供了仿佛SQL 的Pig Latin
语言(包含Filter、GroupBy、Join、OrderBy
等操作,同时也支撑用户自定义函数),允许用户通过编制简单的脚本来实现复杂的数据解析,而不需要编制复杂的MapReduce
应用程序,Pig 会自动把用户编写的脚本转换成MapReduce 作业在Hadoop
集群上运行,而且富有对转移的MapReduce程序举行机动优化的效率,所以,用户在编写Pig
程序的时候,不需要关怀程序的运作效用,这就大大裁减了用户编程时间。由此,通过匹配使用Pig
和Hadoop,在处理海量数据时就足以兑现经济的效用,比使用Java、C++等语言编写MapReduce
程序的难度要小很多,并且用更少的代码量实现了千篇一律的多少处理分析效益。Pig
可以加载数据、表明转换数据以及存储最终结果,因而,在铺子实际接纳中,Pig通常用于ETL(Extraction、Transformation、Loading)过程,即发源各样不同数据源的数目被采访过来将来,采用Pig
举办合并加工处理,然后加载到数据仓库Hive 中,由Hive
实现对海量数据的分析。需要特地提出的是,每种数据解析工具都有一定的局限性,Pig
的计划和MapReduce 一样,都是面向批处理的,由此,Pig
并不符合所有的数码处理任务,特别是当需要查询大数额集中的一小部分数码时,Pig
如故需要对整个或多方数额集举行围观,因此,实现性能不会很好。

HBase

HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,是GoogleBigTable的开源实现,首要用来囤积非结构化和半结构化的涣散数据。HBase的靶子是拍卖相当巨大的表,可以因而水平增添的章程,利用廉价总括机集群处理由领先10亿行数据和数百万列元素组成的数据表

HBase可以一向运用当地文件系统或者Hadoop作为数据存储形式,可是为了增进数据可靠性和连串的健壮性,发挥HBase处理大数据量等效用,需要使用Hadoop作为文件系统。与Hadoop一样,HBase目标重要依赖横向扩充,通过持续扩充廉价的商用服务器来充实总计和储存能力。

HIVE

Hive是一个构建于Hadoop顶层的数据仓库工具,由非死不可公司开支,并在二〇〇八年1十二月开源。Hive在某种程度上可以当做是用户编程接口,其本身并不存储和处理数据,而是依赖HDFS来存储数据,倚重MapReduce来处理数量。Hive定义了简单的切近SQL的查询语言——HiveQL,它与大多数SQL语法兼容,不过,并不完全协助SQL标准,比如,HiveSQL不襄助革新操作,也不协理索引和事情,它的子查询和连接操作也设有许多受制。

HiveQL语句可以长足实现简单的MapReduce任务,这样用户通过编制的HiveQL语句就可以运行MapReduce任务,不必编写复杂的MapReduce应用程序。对于Java开发工程师而言,就不必花费大量精力在记念常见的数码运算与底层的MapReduce
Java
API的对应关系上;对于DBA来说,可以很容易把原先构建在关全面据库上的数据仓库应用程序移植到Hadoop平台上。所以说,Hive是一个得以有效、合理、直观地公司和利用数据的剖析工具。

读书在此之前没搞了然的学问

  1. 历史观的web应用(LAMP、JavaEE、NODE系等)与大数量什么关联?

    事先一向认为大数量的东西就是来顶替传统的Web应用的,其实并不是如此;即使是大数据的架构,应用层仍旧会是价值观的web应用,不过会按照数量特点对数据存储(结构化数据如故会保留在观念的关系型数据库——如MySql,日志等非社团数据会保存在分布式文件系统——如Hadoop的HDFS)。

    大数额的事物不是代表传统的web应用,而是对web应用的增进。基于分布式存储和分布式总括,在此以前单机或者小框框集群无法缓解的问题,使用了大数额技术未来就可以解决了,比如日志等数据当数据量万分大的时候(TB甚至PB),对那多少个数据的分析在观念架构上是无法仍然是相当慢的,使用了大数额技术未来就是可能的了——首假设将数据处理通过MapReduce等拆分到不同的节点(电脑)上推行,然后将节点上的结果合并,最后生成分析结果。

  2. 云总括和大数目

    以此话题在林子雨先生的学科——“第一讲
    大数目概述”里介绍的百般好,感兴趣的情侣可以协调去探视,这里包括总计为:“云统计为大数额提供了技术基础,大数额为云总结提供了用物之地”。

    现在几乎拥有的合作社都把自己的出品吹成“云”…可是真正都是“云”么?其实过多都是传统的web应用部署到阿里云这一个第三方云平台吗;还有一些有谈得来服务器(一般安排),然后搞个公网ip,部署上来也说自己是“云”。

网站地图xml地图