Linux下Hadoop的介绍

hadoop官网:http://hadoop.apache.org/

 

 

一、初始Hadoop


1、Hadoop是什么?

 

Hadoop是Apache开源组织的一个分布式计算框架,可以在大量廉价硬件设备组成的集群上运行应用程序,并为应用程序提供一组稳定可靠的接口,旨在构建一个具有高可靠性和良好扩展性的分布式系统。Hadoop的核心是HDFS(Hadoop Distributed File System),Mapreduce和Hbase,他们分别是Google云计算核心技术GFS,Mapreduce和Bigtable的开源实现。

 

2、Hadoop中涉及到的内容

 

  • hadoop:由java语言开发的开源的分布式计算平台。可提供PB(100万G)存储。hadoop是可靠的,高效的,可伸缩的。
  • hadoop假设计算元素和存储会失败,维护多个副本,确保针对失败的节点重分布处理。文件以块的方式存储。
  • hadoop最核心的是hdfs和mapreduce,hdfs为海量存储提供存储。mapreduce为海量数据提供计算。mapreduce分为jobtrackers和taskreduce组成。
  • hadoop集群包含一个master和若干个slave角色。master称为namenode节点,slave为datanode节点。
  • hdfs命令
hdfs namenode -format:格式化hdfs文件系统
start-all.sh:启动集群
jps:查看节点进程
查看master统计信息和hdfs存储信息:http://masterip:50070
hadoop fs -普通命令:管理hdfs文件命令
hdfs dfsadmin -report:查看节点状态信息
hdfs dfsadmin -safemode enter|leave|get 开启|关闭|查看 安全模式,在安全模式下只可查看不可写入

 

3、Hadoop大家族

 

Hadoop不是一个单一的项目,经过10年的发展,Hadoop已经成为了一个拥有近20个产品的庞大家族。
其中最核心的包括以下9个产品,并且我们将按照下面的顺序一步步学习。

  1. Hadoop:是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架构。
  2. Hive:基于Hadoop的一个数据仓库工具
  3. Pig:基于Hadoop的大规模数据分析工具
  4. Zookeeper:是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高性能的分布式服务
  5. HBase:是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群
  6. Mahout:基于Hadoop的机器学习和数据挖掘的一个分布式框架
  7. Sqoop:是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
  8. Cassandra:是一套开源分布式NoSQL数据库系统
  9. Flume:是一个分布的、可靠的、高可用的海量日志聚合的系统,可用于日志数据收集,日志数据处理,日志数据传输。

 

4、Hadoop安装有如下三种方式

 

单机模式:安装简单,几乎不用作任何配置,但仅限于调试用途;
伪分布模式:在单节点上同时启动NameNode、DataNode、JobTracker/ResourceManager(其中JobTracker是(hadoop的2版本中的叫法;ResourceManager是hadoop的3版本中的叫法)、TaskTracker/NodeManager(其中TaskTracker是(hadoop的2版本中的叫法;NodeManager是hadoop的3版本中的叫法)、 Secondary Namenode等5个进程,模拟分布式运行的各个节点;

  • NameNode:主节点,负责管理文件存储的名称节点
  • DateNode:数据节点,负责具体的文件存储节点。
  • JobTracker/ResourceManager:负责Hadoop的Job任务分发和管理。
  • TaskTracker/NodeManager:负责在单个节点上执行MapReduce任务。
  • SecondaryNameNode:随时用来编辑日志,完成向NameNode之间的合并。

完全分布式模式:正常的Hadoop集群,由多个各司其职的节点构成

 

二、 Hadoop基础知识介绍

 

1、为什么用Hadoop?

 

任何事物的产生都有其必然性。
从2012年开始,大数据这个词被越来越多的提及,现在我们已经进入了大数据时代。在这个信息爆炸的时代,每天产生的数据量十分庞大。而大数据也不仅仅只是说数据多,大数据有四个特点:
数据量大,类型繁多,价值密度低,速度快时效高。
根据这几个特点,我们需要一个东西,具备以下功能:
1.可以存储大量数据
2.可以快速处理大量数据
3.可以从大量数据中进行分析
于是就产生了Hadoop这个模型: 

这里写图片描述

看起来就像一个系统,HDFS和MapReduce是底层,Hive,Pig,Mathout,Zookeeper,Flume,Sqoop,HBase是基于底层系统的一些软件。
所以Hadoop核心中的核心是HDFS和MapReduce。

所以说:
Hadoop就是一个用于处理大数据的计算框架,Hadoop具有分布式、可靠、可伸缩的特性。
分布式:Hadoop通过将文件和任务分配到众多的计算机节点上来提高效率。
可靠:由于是分布式的,所以其中一个或几个节点出现故障,并不会影响整个程序的运行。
可伸缩:任何一个节点的添加和删除都不会影响程序的运行。

 

2、单节点体系

 

实际应用中我们是使用一个有N多台计算机构成的集群(也可以使用多个创建多个虚拟机来模拟)来使用Hadoop的,如果仅仅只有一台计算机,那就失去了Hadoop存在的意义。
每台计算机,我们称之为一个节点,我们需要为每一个节点都配置Hadoop,通过上边的配置过程,我们可以知道,单节点(即每一台计算机)hadoop的体系结构就像下面的图。

这里写图片描述

 

3、HDFS

 

HDFS全称是Hadoop Distribute file system ,即Hadoopp分布式文件系统。
现在的数据量已经达到了PB级(1PB=1024T),对于单个硬盘来说,存储这个数量级的数据具有相当大的压力。所以很自然的我们就会想到将数据切割开来,存储到多个计算机中,由此诞生了分布式文件系统。
为了实现数据的可靠性安全性,HDFS会对每份数据创建副本,默认值是3,及默认情况下一份数据存储在三个不同的节点上,由此导致HDFS具有如下特点:

  1. 高度的数据冗余:这也是没有办法的事,要提高可靠性,冗余是必不可少的。
  2. 适合一次写入,多次读取:由于在写入数据的时候需要为数据创建副本,所以写入的成本很高,如果涉及到了高频率的IO写入,不适合使用Hadoop。
  3. 适合存储大文件,不适合小文件:在HDFS中存在Block的概念,Block是HDFS的存储单元,默认是64M,很多企业已经调整为128M。在存储文件时,会把大文件分割开来存储在一个个的Block块中,一个Block块只会存储一个文件。所以如果存储的小文件过多将造成大量存储空间的浪费。
  4. 对硬件的要求低:可以运用于廉价的商业服务器上,不需要使用性能很高但昂贵的服务器。

 

<1>NameNode,dataNode以及secondary namenode

 

HDFS集群是以Master-Slave模式运行的,其实也可以像nginx中那样说成是Master-worker,一个意思。主要涉及到两种节点,一是nameNode,即Master,另一个是大量的dataNode即worker。

下图是Apache官网关于NameNode和dataNode的关系图:

这里写图片描述

NameNode只有一个,负责维护整个文件系统的元数据,这里的元数据包含每个文件、文件位置以及这些文件及其所在的DataNode内的所有数据块的内存映射。
dataNode存在于每一个节点中,负责具体的工作,包括为读写请求提供服务以及按照NameNode的指令执行数据块创建、删除和复制。
客户端(client)代表用户与namenode和datanode交互来访问整个文件系统。客户端提供了一些列的文件系统接口,因此我们在编程时,几乎无须知道datanode和namenode,即可完成我们所需要的功能。
secondary NameNode 要了解secondary NameNode,首先需要先了解namenode的容错机制。
从上图可以看出,一个Hadoop集群中只要一个nameNode,一旦namenode出现故障,整个集群将会瘫痪,所以namenode必须要有良好的容错机制。

  1. 第一种方式是远程备份:即在namenode将数据写入磁盘时,同步在一个远程服务器上创建数据的副本。
  2. 第二种方式是使用辅助namenode即secondary namenode:首先我们需要知道的是namenode将数据保存在了Namespace镜像和操作日志中,secondary namenode的主要作用是将这两个文件定期进行合并。但是由于是定期执行,secondary  namenode并不能实时同步主namenode的数据,所以一旦namenode挂掉,不可避免的会造成数据丢失,所以稳妥的方式就是结合两种方法,当主namenode宕掉时,将secondary namenode的数据拷贝到secondary namenode,然后再让secondary namenode充当namenode的作用。

 

4、MapReduce

 

MapReduce是Hadoop的分布式计算框架,现在我们只做初步的了解。
MapReduce=Map+Reduce,即MapReduce分为Map的过程和Reduce的过程。这两个刚才都是需要我们通过程序来控制的。
先看下面这张图:

这里写图片描述

这张图是在网上找的。
如上图所示就是MapReduce处理的一个完整的过程。
Input:最左边是输入的过程,输入了图示的数据。
Split分片:mapreduce会根据输入的文件计算分片,每个分片对应与一个map任务。而分片的过程和HDFS密切相关,比如HDFS的一个block大小为64M,我们输入的三个文件分比为10M,65M,128M,这样的话第一个文件生成一个10M的分片,第二个文件生成一个64M的分片和一个1M的分片,第三个文件生生成两个64M的分片,这样的话就会一共生成5个分片。
Map:map阶段是由编程人员通过代码来控制的,图中所示的大概内容就是将字符串分割开来,作为键存储在map中,值的位置存储1,表示数量。
shuffle洗牌:洗牌阶段,由于之前生成map中存在很多键相同的map,在洗牌阶段将键相同的进行合并。
Reduce:reduce阶段也是有开发人员通过代码控制,本例中是将键相同的map的value值进行求和,得出最终的map
这样最后输出的数据就是每个字符串出现的次数。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值