1 hadoop概述
1.1 为什么会有大数据处理
传统模式已经满足不了大数据的增长
1)存储问题
传统数据库:存储亿级别的数据,需要高性能的服务器,往往这样的服务器非常贵,几十万一台;并且解决不了本质问题。只能存结构化数据。
大数据存储:通过分布式存储,将数据存到一台机器的同时,还可以备份到其他机器上,这样当某台机器挂掉了或磁盘坏掉了,在其他机器上可以拿到该数据,数据不会丢失(可备份)。 可横行扩展,磁盘不够可以挂磁盘,磁盘挂满了,添加机器挂磁盘。
2)分析数据问题
传统数据库: 当数据库存储亿级别的数据后,查询效率也下降的很快,查询不能秒级返回。
大数据分析:分布式计算。也是可以横行扩展。内存不够加内存,加机器加内存。
MapReduce:多次与磁盘进行交互,运行比较慢,如果对时间要求不高,可以考虑用。
批处理(运算的数据是有范围的,运算完一次,就代表该批次处理完成)
实时计算: 对时间的要求很高,基本可以快速处理完成。
实时计算的数据,没有范围的,会根据某个时间的范围进行计算。spark streaming ,storm, flink
1.2 什么是hadoop?
Hadoop项目是以可靠、可扩展和分布式计算为目的而发展而来的开源软件。
Hadoop 是Apache的顶级项目,是一种分布式系统基础架构。
Apache:APACHE软件基金会,支持Apache的开源软件社区项目,为公众提供好的软件产品。
项目主页:http://hadoop.apache.org
主要解决海量数据的存储和海量数据的分析计算问题。
广义上讲Hadoop通常说的是一种广泛的定义---Hadoop生态圈。
hadoop生态圈:
1)HDFS(Hadoop分布式文件系统)
HDFS是一种数据分布式保存机制,数据被保存在计算机集群上。数据写入一次,读取多次。HDFS 为HBase等工具提供了基础。
2)MapReduce(分布式计算框架)
MapReduce是一种分布式计算模型,用以进行大数据量的计算,是一种离线计算框架。
这个 MapReduce 的计算过程简而言之,就是将大数据集分解为成若干个小数据集,每个(或若干个)数据集分别由集群中的一个结点(一般就是一台主机)进行处理并生成中间结果,然后将每个结点的中间结果进行合并, 形成最终结果。
3)HBASE(分布式列存数据库)
HBase是一个建立在HDFS之上,面向列的NoSQL数据库,用于快速读/写大量数据。HBase使用Zookeeper进行管理,确保所有组件都正常运行。
4)Sqoop(数据ETL/同步工具)
Sqoop是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之间传输数据。
5)flume(分布式日志收集系统)
Flume是一个分布式、可靠、和高可用的海量日志聚合的系统,如日志数据从各种网站服务器上汇集起来存储到HDFS,HBase等集中存储器中。
6)Storm(流示计算、实时计算)
Storm是一个免费开源、分布式、高容错的实时计算系统。Storm令持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求。Storm经常用于在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域。
7)Zookeeper(分布式协作服务)
Hadoop的许多组件依赖于Zookeeper,它运行在计算机集群上面,用于管理Hadoop操作。
作用:解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。
8)Pig(ad-hoc脚本)
Pig定义了一种数据流语言—Pig Latin,它是MapReduce编程的复杂性的抽象,Pig平台包括运行环境和用于分析Hadoop数据集的脚本语言(Pig Latin)。
其编译器将Pig Latin 翻译成MapReduce 程序序列将脚本转换为MapReduce任务在Hadoop上执行。通常用于进行离线分析。
9)Hive(数据仓库)
Hive定义了一种类似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行。通常用于离线分析。
HQL用于运行存储在Hadoop上的查询语句,Hive让不熟悉MapReduce开发人员也能编写数据查询语句,然后这些语句被翻译为Hadoop上面的MapReduce任务。
10)Spark(内存计算模型)
Spark提供了一个更快、更通用的数据处理平台。和Hadoop相比,Spark可以让你的程序在内存中运行时速度提升100倍,或者在磁盘上运行时速度提升10倍。
11)Oozie(工作流调度器)
Oozi可以把多个Map/Reduce作业组合到一个逻辑工作单元中,从而完成更大型的任务。
12)Mahout(数据挖掘算法库)
Mahout的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。
13)Hadoop YARN(分布式资源管理器)
YARN是下一代MapReduce,即MRv2,是在第一代MapReduce基础上演变而来的,主要是为了解决原始Hadoop扩展性较差,不支持多计算框架而提出的。
其核心思想:
将MR1中JobTracker的资源管理和作业调用两个功能分开,分别由ResourceManager和ApplicationMaster进程来实现。
1)ResourceManager:负责整个集群的资源管理和调度
2)ApplicationMaster:负责应用程序相关事务,比如任务调度、任务监控和容错等
14)Tez(DAG计算模型)
一个运行在YARN之上支持DAG(有向无环图)作业的计算框架。
Tez的目的就是帮助Hadoop处理这些MapReduce处理不了的用例场景,如机器学习。