本篇文章参考部分Hadoop官方介绍加之个人对大数据Hadoop的一个理解,共同进步。提到Hadoop,我们会想到big data,而所谓的大数据就是指海量的数据,大数据特点有四个层面:
第一: 数据体量巨大。从TB级别,跃升到PB级别;
第二: 数据类型繁多。网络日志、视频、图片、地理位置信息等等。
第三:处理速度快,1秒定律,可从各种类型的数据中快速获得高价值的信息,这一点也是和传统的数据挖掘技术有着本质的不同。
第四: 只要合理利用数据并对其进行正确、准确的分析,将会带来很高的价值回报。
所以总结起来就是大数据的4个“V”——Volume(数据体量大)、Variety(数据类型繁多)、Velocity(处理速度快)、Value(价值密度低)。
大数据必须采用分布式架构,无法用单台的计算机进行处理,它的特色在于对海量数据进行分布式数据挖掘,但它必须依托云计算的分布式处理、分布式数据库和云存储、虚拟化技术。所以从技术上看,大数据与云计算的关系密不可分
当前用于分析大数据的工具,Hadoop已经是目前大数据平台中应用率最高的技术
那么什么是Hadoop:
Hadoop是一个用Java语言实现的针对大量数据进行分布式处理的软件框架
⒈高可靠性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配
⒉高扩展性。能可靠的存储和处理千兆字节(PB)数据。
⒊高效性。并行处理加快处理速度。
4.成本低:可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。
Hadoop核心:
HDFS:
主从结构(Master_Slave结构)
NameNode负责:
DataNode负责:
MapReduce :
Map是把Input分解成中间的Key/Value对,Reduce把Key/Value合成最终Output。这两个函数由程序员提供给系统,下层设施把Map和Reduce操作分布在集群上运行,并把结果存储在GFS上。
在客户端、JobTracker、TaskTracker的层次来分析MapReduce的工作原理:
在客户端启动一个作业。向JobTracker请求一个Job ID。.将运行作业所需要的资源文件复制到HDFS上,包括MapReduce程序打包的JAR文件、配置文件和客户端计算所得的输入划分信息。这些文件都存放在JobTracker专门为该作业创建的文件夹中。文件夹名为该作业的Job ID。
JobTracker接收到作业后,将其放在一个作业队列里,等待作业调度器对其进行调度,当作业调度器根据自己的调度算法调度到该作业时,会根据输入划分信息为每个划分创建一个map任务,并将map任务分配给TaskTracker执行。
对于map和reduce任务,TaskTracker根据主机核的数量和内存的大小有固定数量的map槽和reduce槽。
TaskTracker每隔一段时间会给JobTracker发送一个心跳,告诉JobTracker它依然在运行,同时心跳中还携带着很多的信息,比如当前map任务完成的进度等信息。当JobTracker收到作业的最后一个任务完成信息时,便把该作业设置成“成功”。当JobClient查询状态时,它将得知任务已完成,便显示一条消息给用户。
Hadoop子项目
Hadoop的架构