Hadoop是什么,能干什么,怎么使用

1、Hadoop是什么

 

 

初识hadoop

现在经常听到“大数据“这个名词,那是因为随着互联网、物联网等技术的快速普及和应用,现在我们的生活中时时刻刻被这些数据所包围。不管生活当中的大大小小的事情,背后都有相关的数据记录存储在存储空间中。

举个例子,你看到的这篇文章的内容是存储在数据库当中,你通过某个平台观看到该篇文章,那么你的浏览记录也会被记录在平台的数据存储空间中。

那么对于现在大数据量的时代,我们遇到的问题很简单,数据量呈指数增长(硬盘容量不断提升),但是硬盘的访问速度并未与时俱进有非常大的提升,硬盘数据的写入速度那就更不用提了,更慢。之前旧的处理方式无法满足现阶段的大数据量计算和读取的需求,互联网巨头谷歌优先推出MapReduce并行计算模型来处理大数据量计算。之后由Apache基金会在MapReduce的基础上研发了hadoop框架,它是一个分布式系统的基础架构,在用户不需要了解底层分布式细节的情况下,进行分布式程序的开发。从而利用分布式集群进行高速的存储和运算。

 

Hadoop是什么,能干什么,怎么使用

 

 

什么是hadoop

Hadoop是Apache旗下一个开源框架,用来开发与运行分布式应用程序来处理海量数据(大型数据集),hadoop不是指一个具体的软件或者应用,它是一个编程模型(思想)来处理实际的问题,它提供了一些基础模块或软件为此框架做支撑。主要学习的模块有:

1、Hadoop HDFS:分布式存储系统。

2、Hadoop YARN: 任务调度和集群资源管理的框架。

3、Hadoop MapReduce:一种基于Hadoop YARN的大型数据集并行计算处理系统。

4、其它模块,还有一些hadoop生态圈中的辅助工具,主要用于特定目的或者功能等,如:

​Hbase: 是一个分布式的、面向列的开源数据库。

​Hive:是基于Hadoop的一个数据仓库工具。

​Pig:运行在Hadoop上,是对大型数据集进行分析和评估的平台。

​Spark:Hadoop数据快速通用的计算引擎。

​ZooKeeper: 一个分布式的,开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件。

等等。上述每个模块有自己独立的功能,而模块之间又有相互的关联。通常我们所说的hadoop指的是hadoop的一个生态圈。

 

Hadoop是什么,能干什么,怎么使用

 

 

hadoop的优势

hadoop并不是第一个分布式计算的框架,但是hadoop框架为啥能从中脱颖而出,使得大家对分布式框架有了更多的了解和关注。主要有以下几点不同之处:

1、方便:hadoop部署不需要高昂的硬件设施,只需要一般的商用机器或者云计算的云服务器节点上即可完成部署运行。

2、可靠性:hadoop大部分是运行在商用的小型机上,就会存在机器出现一些物理故障,但是hadoop可以很好的处理此类故障发生时,数据处理不会出现问题。

3、可扩展,hadoop可以通过增加集群节点,有效的扩展提升处理数据和计算的速度。以便处理更大的数据集。

4、开发变得简单,假如没有hadoop框架的支持,自己要开发一个符合业务需求高效的并行代码将变得非常麻烦。

1.1、小故事版本的解释

小明接到一个任务:计算一个100M的文本文件中的单词的个数,这个文本文件有若干行,每行有若干个单词,每行的单词与单词之间都是以空格键分开的。对于处理这种100M量级数据的计算任务,小明感觉很轻松。他首先把这个100M的文件拷贝到自己的电脑上,然后写了个计算程序在他的计算机上执行后顺利输出了结果。

后来,小明接到了另外一个任务,计算一个1T(1024G)的文本文件中的单词的个数。再后来,小明又接到一个任务,计算一个1P(1024T)的文本文件中的单词的个数……

面对这样大规模的数据,小明的那一台计算机已经存储不下了,也计算不了这样大的数据文件中到底有多少个单词了。机智的小明上网百度了一下,他在百度的输入框中写下了:大数据存储和计算怎么办?按下回车键之后,出现了有关Hadoop的网页。

看了很多网页之后,小明总结一句话:Hadoop就是存储海量数据和分析海量数据的工具。

1.2、稍专业点的解释

Hadoop是由java语言编写的,在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,其核心部件是HDFS与MapReduce。

HDFS是一个分布式文件系统:引入存放文件元数据信息的服务器Namenode和实际存放数据的服务器Datanode,对数据进行分布式储存和读取。

MapReduce是一个计算框架:MapReduce的核心思想是把计算任务分配给集群内的服务器里执行。通过对计算任务的拆分(Map计算/Reduce计算)再根据任务调度器(JobTracker)对任务进行分布式计算。

1.3、记住下面的话:

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

把HDFS理解为一个分布式的,有冗余备份的,可以动态扩展的用来存储大规模数据的大硬盘。

把MapReduce理解成为一个计算引擎,按照MapReduce的规则编写Map计算/Reduce计算的程序,可以完成计算任务。

2、Hadoop能干什么

大数据存储:分布式存储

日志处理:擅长日志分析

ETL:数据抽取到oracle、mysql、DB2、mongdb及主流数据库

机器学习: 比如Apache Mahout项目

搜索引擎:Hadoop + lucene实现

数据挖掘:目前比较流行的广告推荐,个性化广告推荐

Hadoop是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式。

实际应用:

(1)Flume+Logstash+Kafka+Spark Streaming进行实时日志处理分析

Hadoop是什么,能干什么,怎么使用

 

(2)酷狗音乐的大数据平台

Hadoop是什么,能干什么,怎么使用

 

3、怎么使用Hadoop

3.1、Hadoop集群的搭建

无论是在windows上装几台虚拟机玩Hadoop,还是真实的服务器来玩,说简单点就是把Hadoop的安装包放在每一台服务器上,改改配置,启动就完成了Hadoop集群的搭建。

3.2、上传文件到Hadoop集群

Hadoop集群搭建好以后,可以通过web页面查看集群的情况,还可以通过Hadoop命令来上传文件到hdfs集群,通过Hadoop命令在hdfs集群上建立目录,通过Hadoop命令删除集群上的文件等等。

3.3、编写map/reduce程序

通过集成开发工具(例如eclipse)导入Hadoop相关的jar包,编写map/reduce程序,将程序打成jar包扔在集群上执行,运行后出计算结果。

Hadoop是什么,能干什么,怎么使用