Hadoop 简述

大数据

1、有海量的数据

2、有对海量数据进行挖掘的需求

3、有对海量数据进行挖掘的软件工具(hadoop、spark、storm、flink、tez、impala......)

 

大数据的具体应用

电商推荐系统:基于海量的浏览行为、购物行为数据,进行大量的算法模型的运算,得出各类推荐结论,以供电商网站页面来为用户进行商品推荐。

精准广告推送系统:基于海量的互联网用户的各类数据,统计分析,进行用户画像(得到用户的各种属性标签),然后可以为广告主进行有针对性的精准的广告投放。

 

什么是Hadoop

Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算。

hadoop中有3个核心组件:

分布式文件系统:HDFS —— 实现将文件分布式存储在很多的服务器上

分布式运算编程框架:MAPREDUCE —— 实现在很多机器上分布式并行运算

分布式资源调度平台:YARN —— 帮用户调度大量的mapreduce程序,并合理分配运算资源

 

hadoop的优点: 一个能对大数据进行分布式处理的软件框架,是一种可靠、高效、高伸缩的方式进行处理数据。

哪里可靠:因为它假设了计算元素或储存失败,因此它维护了多个工作数据和副本,确保能够针对失败的节点进行重新分布处理

哪里高效:因为它是以并行的方式进行工作,通过并行处理加快处理速度

哪里可伸缩:因为可以处理PB级数据

 

hadoop运用场景

对数据量特别大、数据类型复杂,无法用传统数据库进行储存和处理的的文本、日志、视频、图片、地理位置等。

Hadoop中最核心设计

HDFS(为海量数据提供储存) +  MapReduce(为海量数据提供了计算)

数据在Hadoop中处理的流程可以简单的按照下图来理解:数据通过Haddop的集群处理后得到结果。

Hadoop 简述

 

HDFS的工作机制

1、客户把一个文件存入hdfs,hdfs会把这个文件切块后,分散存储在N台linux机器系统中(负责存储文件块的角色:data node)<切块的行为是由客户端决定的>

2、一旦文件被切块存储,hdfs中就必须有一个机制来记录用户的每一个文件的切块信息,及每一块的具体存储机器(负责记录块信息的角色是:name node)

3、为了保证数据的安全性,hdfs可以将每一个文件块在集群中存放多个副本(到底存几个副本,是由当时存入该文件的客户端指定的)

所以一个hdfs系统,由一台运行了namenode的服务器,和N台运行了datanode的服务器组成!

Hadoop 简述

图片说明:

NameNode中记录了文件是如何被拆分成block以及这些block都存储到了那些DateNode节点;

NameNode同时保存了文件系统运行的状态信息;

DataNode中存储的是被拆分的blocks;

Secondary NameNode帮助NameNode收集文件系统运行的状态信息;

JobTracker当有任务提交到Hadoop集群的时候负责Job的运行,负责调度多个TaskTracker;

TaskTracker负责某一个map或者reduce任务。

 

MapReduce

如果使用很多台计算机处理就面临计算机之间如何分配任务、如何通信、数据交换的问题,MapReduce/Spack提供了可靠的能在集群上运行的计算模型。

 

Hive

简单来说就是程序员在写MapReduce程序的时候发现很麻烦,但是可以通过Hive解决这个事情;

hive是通过SQL的方式自动把脚本或者SQL翻译成MapReduce程序,然后丢给计算引擎去处理。

数据仓库的基本架构:底层是 HDFS,上面运行的是 MapReduce/Spark,在往上封装的是Hive。

 

Storm

想要更快的计算处理速度?Storm 是最流行的流计算平台。流处理的思路就是在数据进入系统的时候就进行处理,基本无延迟。缺点是不灵活,必须事先知道需要统计的数据,数据流过就没有了,没法进行补算。

 

HBase

HBase 是一个面向列的存储系统,以 key value 对的方式存储数据并对存取操作做了优化,能够飞快地根据 key 获取绑定的数据。例如从几个 P 的数据中找身份证号只需要零点几秒。

 

yarn

为了能让我们这么多工具有序的运行在同一个集群上,我们就需要这么一个调度系统进行协调,目前来说yarn管理是最流行的。

 

用 sql 还是 hadoop?

因为 SQL 比较容易上手,容易修改,可能一两行的 SQL 语句换成 MapReduce 就要几十行甚至几百行,但在分布式计算的场合hadoop要简单得多。

Hadoop 简述

 

参考链接

1、用通俗易懂的话说下hadoop是什么,能做什么 https://blog.****.net/houbin0912/article/details/72967178

2、几句话让你读懂Hadoop都干了什么 https://blog.****.net/qq_32941881/article/details/80936959

3、一张图告诉你是需要 SQL 还是 Hadoop https://blog.****.net/defonds/article/details/47005827

4、简单聊一下什么是大数据,hadoop和hdfs又是什么? https://blog.****.net/RobertDowneyLm/article/details/80274265

5、告诉你Hadoop是什么 https://blog.****.net/zzhays/article/details/8053178