大数据(Hadoop)

大数据(Hadoop)

一、了解大数据

1. 为什么要学习大数据

​ 得益于云计算的发展,我们正处在信息大爆炸的时代,这个时代所有行为都将产生巨量的数据。

​ 虽然有了这些大量的数据,但这并没有什么用,就好像一堆破烂中的一粒金子。每个企业要想在这个时代取得竞争的优势,就必须从这些数据中获取到有价值的信息。因此我们还必须想办法去储存并分析这些数据。

2. 什么是大数据

​ 大数据是指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合。

​ 另外大数据也是一种方法论。原则是 “一切都被记录,一切都被数字化,从数字里寻求需求、寻找知识、发掘价值”,这是一种新的思维方式,不同于此前的专家方式,而是通过数据分析来得到结论,这是大数据时代的一个显著特征。

3. 大数据的特征

  • 数据体量大
  • 数据类型多样,以非结构化为主。
  • 价值密度低。
  • 产生和要求处理速度快。

4. 常见的大数据处理系统

名称 类型 说明
Hadoop 开源 Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。
Spark 开源 类似于Hadoop MapReduce的并行框架
Strom 开源 实时的、分布式以及具备高容错的计算系统
MongoDB 开源 面向文档的NoSQL数据库

二、Hadoop 体系结构

​ Hadoop 源自于Google 在2003到2004年公布的关于GFS( Google File System )、MapReduce和BigTable的三篇论文,创始人是Doug Cutting。Hadoop现在是Apache基金会*项目,“Hadoop”是一个虚构的名字,Doug Gutting的孩子为其黄色玩具大象所命名。

​ Hadoop是开源软件,实现了一个分布式文件系统(Hadoop Distributed File System , HDFS),分布式系统是运行在多个主机上的软件系统。HDFS有着高容错性的特点,能够自动保存数据的多个副本,并能自动将失败的任务重新分配。Hadoop设计用来部署在低廉的通用硬件平台上组成集群,提供热插拔的方式加入新的节点来向集群中扩展,将计算任务动态分配到集群中各个节点并保证各节点的动态平衡。总的来说,Hadoop具有低成本、高扩展性、高效性、高容错性的特点。

1. Hadoop的核心

​ HDFS和MapReduce是Hadoop的两大核心。通过HDFS来实现对分布式储存的底层支持,达到高速并行读写与大容量的储存扩展。通过MapReduce实现对分布式并行任务处理程序支持,保证高速分析处理数据。HDFS在MapReduce任务处理过程中提供了对文件操作和储存的支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。

2. Hadoop的作用

​ Hadoop解决了大数据的储存和数据处理作业的并行运算这两个问题。幸运的是,这两个核心模块对开发人员都是透明的,也就是说我们不用去关心它是如何进行底层的分布式储存与计算,仅需要我们能够使用Hadoop提供的HDFS文件管理命令和MapReduce并行计算的API即可让Hadoop为我们处理大数据。

3. Hadoop子项目

整个Hadoop生态圈已发展成为包含很多子项目的集合。完整的项目结构如下图所示

大数据(Hadoop)

子项目名 介绍
HDFS 分布式文件系统>整个Hadoop体系的基石
MapReduce/YARN 并行编程模型>YARN是第二代的MapReduce框架,从Hadoop 0.23.01版本后,MapReduce被重构,通常YARN也称为MapReduce V2,老MapReduce成为 MapReduce V1。
Hive 建立在Hadoop上的数据仓库>提供类似SQL语言的查询方式查询Hadoop中的数据。
Pig 一个对大型数据集进行分析、评估的平台,主要作用类似于数据库里的储存过程
HBase 全称Hadoop Database,Hadoop的分布式的、面向列的数据库,来源于Google的关于Big Table的论文,主要用于需要随机访问、实时读写的大数据。
Zookeeper 是一个为分布式应用所设计的协调服务,主要为用户提供同步、配置管理、分组和命名等服务,减轻分布式应用程序所承担的协调任务。

当然还有大量的其他项目加入到Hadoop生态圈,如:

子项目名 介绍
Sqoop 主要用于Hadoop与传统数据库(MySQL等)间的数据传递。
Flume 日志采集系统。
Spark 一个相对独立于Hadoop的大数据处理系统,可单独进行分布式处理并且他能和HDFS很好的结合.
Oozie 可以将多个MapReduce作业组合到一个逻辑工作单元中,进行工作计划的安排,类似于工作流管理引擎。
Ambari 支持Hadoop集群的管理、监控的Web工具。

4. Hadoop发行版本

大数据(Hadoop)