Hadoop – 嗨软 https://ihacksoft.com/archive 分享最好用的常用软件 Tue, 22 Nov 2022 02:41:09 +0000 zh-CN hourly 1 https://wordpress.org/?v=4.9.26 Hadoop 与大数据的关系,看完秒懂! https://ihacksoft.com/archive/507.html https://ihacksoft.com/archive/507.html#respond Mon, 25 Mar 2019 06:58:46 +0000 https://ihacksoft.com/?p=517   首先理解什么叫大数据。“大”,说的并不仅是数据的“多”!不能用数据到了多少TB ,多少 PB 来说。对于大数据,可以用四个词来表示:大量,多样,实时,不确定。也就是数据的量庞大,数据的种类繁杂多样话,数据的变化飞快,数据的真假存疑。

Hadoop 与大数据

大量:这个大家都知道,想百度,淘宝,腾讯,Facebook,Twitter等网站上的一些信息,这肯定算是大数据了,都要存储下来。

多样:数据的多样性,是说数据可能是结构型的数据,也可能是非结构行的文本,图片,视频,语音,日志,邮件等。

实时:大数据需要快速的,实时的进行处理。如果说对时间要求低,那弄几个机器,对小数据进行处理,等个十天半月的出来结果,这样也没有什么意义了。

不确定: 数据是存在真伪的,各种各样的数据,有的有用,有的没用。很难辨析。

根据以上的特点,我们需要一个东西,来:
1、存储大量数据。
2、快速的处理大量数据。
3、从大量数据中进行分析。

于是就有了这样一个模型 Hadoop。Hadoop 的历史就不说了,先来看看模型:

Hadoop 与大数据

这就相当于一个生态系统,或者可以看成一个操作系统 XP、Windows 7。

HDFS 和 MapReduce 为操作系统的核心,Hive,Pig,Mathout,Zookeeper,Flume,Sqoop,HBase等,都是操作系统上的一些软件,或应用。

HDFS 是什么

HDFS:(Hadoop Distributed File System),Hadoop分布式文件系统。从名字上就看出了它的两点功能。基本功能:存文件,是一个文件系统;另外这个文件系统是分布式的。

Hadoop 与大数据

从图上来看,HDFS的简单原理如下:

Rack1,Rack2,Rack3 是三个机架。

1,2,3,4,5,6,7,8,9,10,11,12 是机架上的十二台服务器。

Block A, Block B, Block C为三个信息块,也就是要存的数据。

从整体布局上来看,信息块被分配到机架上,看似很均匀。这样分配的目的,就是备份,防止某一个机器宕机后,单点故障的发生。

MapReduce 是什么

MapReduce,(Map + Reduce),就看成是计算的功能,可以对数据进行处理。

它加快了计算。主要也是通过上图的布局。将数据分布到多个服务器上。当有任务了,比如查询,或者比较大小,先让每台服务器,都处理自己的存储中文件。然后再将所有服务器的处理结果进行第二次处理。最后将结果返回。

另外,从别的资料看到一种解释 MapReduce 的方式,很简单:

Goal: count the number of books in the library.
Map: You count up shelf #1, I count up shelf #2.
(The more people we get, the faster this part goes. )
Reduce: We all get together and add up our individual counts.

最后,Hadoop 还有一点好处,就是省钱。框架开源的,免费的,服务器也不用特别牛X的,省钱才是硬道理!

]]>
https://ihacksoft.com/archive/507.html/feed 0
故事开头理解 Hadoop 是什么、能做什么?绝对通俗易懂! https://ihacksoft.com/archive/502.html https://ihacksoft.com/archive/502.html#respond Fri, 22 Mar 2019 08:12:30 +0000 https://ihacksoft.com/?p=512   信息化技术真的是日新月异,变化太快了,一段时间不学习就可能落后于时代。处在目前的大数据时代,做为一名信息化技术人员,Hadoop 是一个必学的概念。作为初学者,如何入门理解 Hadoop?网上文章很多很多,本文作了一个整理,希望以最通俗易懂的方式读懂 Hadoop。

故事开场,通俗易懂

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

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

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

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

Hadoop 是什么

更专业一点的理解

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

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

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

HDFS 的设计特点

  1、大数据文件,非常适合上 T 级别的大文件或者一堆大数据文件的存储,如果文件只有几个 G 甚至更小就没啥意思了。

  2、文件分块存储,HDFS 会将一个完整的大文件平均分块存储到不同计算器上,它的意义在于读取文件时可以同时从多个主机取不同区块的文件,多主机读取比单主机读取效率要高得多得都。

  3、流式数据访问,一次写入多次读写,这种模式跟传统文件不同,它不支持动态改变文件内容,而是要求让文件一次写入就不做变化,要变化也只能在文件末添加内容。

  4、廉价硬件,HDFS 可以应用在普通 PC 机上,这种机制能够让给一些公司用几十台廉价的计算机就可以撑起一个大数据集群。

  5、硬件故障,HDFS 认为所有计算机都可能会出问题,为了防止某个主机失效读取不到该主机的块文件,它将同一个文件块副本分配到其它某几个主机上,如果其中一台主机失效,可以迅速找另一块副本取文件。

HDFS 和 MapReduce

  Hadoop 的框架最核心的设计就是:HDFS 和 MapReduce。HDFS 为海量的数据提供了存储,则 MapReduce 为海量的数据提供了计算。把 HDFS 理解为一个分布式的,有冗余备份的,可以动态扩展的用来存储大规模数据的大硬盘。把 MapReduce 理解成为一个计算引擎,按照 MapReduce 的规则编写 Map 计算 /Reduce 计算的程序,可以完成计算任务。

HDFS 的关键元素

  1、Block:将一个文件进行分块,通常是 64M。

  2、NameNode:保存整个文件系统的目录信息、文件信息及分块信息,这是由唯一 一台主机专门保存,当然这台主机如果出错,NameNode 就失效了。在 Hadoop2.* 开始支持 activity-standy 模式----如果主 NameNode 失效,启动备用主机运行 NameNode。

  3、DataNode:分布在廉价的计算机上,用于存储 Block 块文件。

MapReduce 举例理解

  我们要数图书馆中的所有书。你数 1 号书架,我数 2 号书架。这就是 “Map”。我们人越多,数书就更快。现在我们到一起,把所有人的统计数加在一起。这就是 “Reduce”。通俗说 MapReduce 是一套从海量源数据提取分析元素最后返回结果集的编程模型,将文件分布式存储到硬盘是第一步,而从海量数据中提取分析我们需要的内容就是 MapReduce 做的事了。
  MapReduce 的基本原理就是:将大的数据分析分成小块逐个分析,最后再将提取出来的数据汇总分析,最终获得我们想要的内容。当然怎么分块分析,怎么做 Reduce 操作非常复杂,Hadoop 已经提供了数据分析的实现,我们只需要编写简单的需求命令即可达成我们想要的数据。

Hadoop 能干什么

大数据存储:分布式存储
日志处理:擅长日志分析
ETL:数据抽取到 oracle、mysql、DB2、mongdb 及主流数据库
机器学习: 比如 Apache Mahout 项目
搜索引擎:Hadoop + lucene 实现
数据挖掘:目前比较流行的广告推荐,个性化广告推荐
Hadoop 是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式。

Hadoop 简单使用过程

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

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

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

]]>
https://ihacksoft.com/archive/502.html/feed 0