你好。

Hadoop是现在流行的大数据处理平台,几乎已经成为大数据的代名词,所以学大数据hadoop是必学的。下面从以下几个点讲一下:

一、为什么会有大数据处理

传统模式已经满足不了大数据的增长

1)存储问题

  • 传统:存mysql等关系型资料库,资料库想存下大量的数据,需要高性能的伺服器,几十 万一台伺服器,随著数据量越来越大,加这种伺服器已经解决不了根本问题。
  • 大数据存储:HDFS存海量数据,HDFS可以作用在低成本的硬体上,直接存磁碟、数据可以备份,不会丢失。磁碟空间不够可以加磁碟。

2)分析数据问题

  • 传统:当达到亿级别以后,资料库的性能下降很快,查询速度也会下降。
  • 大数据:分散式计算。

二、什么是hadoop?

Hadoop项目是以可靠、可扩展和分散式计算为目的而发展而来的开源软体。

  • 可靠:有备份,数据不易丢失。hdfs可以备份数据。
  • 可扩展: 存储不够,加磁碟,加机器挂磁碟 分析CPU内存资源不够,加机器加内存

  • 分散式计算: 多个机器同时计算一个任务的一部分,然后,把每个计算的结果进行汇总。

三、hadoop核心组件

用于解决两个核心问题:存储和计算

核心组件 :

1)Hadoop Common:一组分散式文件系统和通用I/O的组件与介面(序列化、Java RPC 和持久化数据结构)。

2)Hadoop Distributed FileSystem(Hadoop分散式文件系统HDFS)

HDFS是存储数据的地方,就像我们电脑的硬碟一样文件都存储在这个上面。

3)Hadoop MapReduce(分散式计算框架)

MapReduce是对数据进行处理计算的,它有个特点就是不管多大的数据只要给它时间它就能把数据跑完,但是时间可能不是很快所以它叫数据的批处理。

4)Hadoop YARN(分散式资源管理器)

YARN是体现Hadoop平台概念的重要组件,有了它大数据生态体系的其它软体就能在hadoop上运行了,这样就能更好的利用HDFS大存储的优势和节省更多的资源。

关于大数据的基础知识,知乎专栏:从头学习大数据,供你参考学习!


1、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作为一个生态系统,自2004年前后,已经发展了十多年,是基于Google发表的大数据论文进行的开源实现。核心模块包括分散式计算框架MapReduce,分散式文件系统HDFS和分散式列存储资料库HBase。

1.MapReduce为大数据场景下数据计算提供了一套通用框架,用于处理TB级别数据的统计、排序等问题(单机内存无法处理)。用户需自己实现mapper和reducer方法,仅可用于离线批量计算,实时性不高。Spark作为更新一代的分散式计算引擎,更多的利用内存存储中间结果,减少了磁碟存储的IO开销,计算性能更高。流式计算场景下可用的计算引擎有Spark Streaming和Flink。

2.分散式文件系统HDFS,十多年来一直作为大数据存储的标配。HDFS通过多副本策略,充分利用节点的存储资源,解决了大数据可靠性,一致性问题。

3.HBase用于解决大数据场景下数据随机读写的问题,基于kv存储,扩展性更高。


分散式存储和计算,顺带解决下分散式资源管理的问题

相当于一个最小的分散式计算系统 存储hdfs. 资源管理yarn 计算MR


谢邀!

hadoop核心技术架构:hdfs和mapreduce。

hdfs,分散式文件存储。

mapreduce,分散式计算引擎。

虽然这两个组件从最新技术角度看来已经不那么优势,甚至有点不合理。但是毕竟开源最热,使用最广泛。所以是大数据入门圣经。


推荐阅读:
相关文章