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的集群处理后得到结果。
HDFS的工作机制
1、客户把一个文件存入hdfs,hdfs会把这个文件切块后,分散存储在N台linux机器系统中(负责存储文件块的角色:data node)<切块的行为是由客户端决定的>
2、一旦文件被切块存储,hdfs中就必须有一个机制来记录用户的每一个文件的切块信息,及每一块的具体存储机器(负责记录块信息的角色是:name node)
3、为了保证数据的安全性,hdfs可以将每一个文件块在集群中存放多个副本(到底存几个副本,是由当时存入该文件的客户端指定的)
所以一个hdfs系统,由一台运行了namenode的服务器,和N台运行了datanode的服务器组成!
图片说明:
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要简单得多。
参考链接
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