hadoop从入门到放弃
在此之前,分享知乎上看到的关于 hadoop 不错的东西
作者:蛙课网 链接:https://www.zhihu.com/question/333417513/answer/742465814 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。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. 简介
Hadoop 是一个用 java 编写的 Apache 开源框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集. Hadoop 框架应用程序在跨计算机群集提供分布式存储和计算的环境中工作. Hadoop 旨在从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储.
hadoop 的架构如下图。
MapReduce 是一种并行编程模型,用于编写 Google 设计的分布式应用程序,用于高效处理大量数据 (多 TB 数据集),大型集群(数千个节点) 的商用硬件,采用可靠,容错的
方式. MapReduce 程序在 Hadoop 上运行,Hadoop 是一个 Apache 开源框架.
Hadoop 分布式文件系统 (HDFS) 是基于 Google 文件系统(GFS),提供旨在在商用硬件上运行的分布式文件系统. 它与现有的分布式文件系统有许多相似之处. 但是,来自其他分布式文件系统的差异
非常重要. 它具有高度容错性,旨在部署在低成本硬件上. 它提供对
应用程序数据的高吞吐量访问,适用于具有大型数据集的应用程序
common uyilities 是其他 hadoop 模块所需的 java 库和实用的程序
yarn:作业调度和集群资源管理的框架
2. 操作模式
下载 Hadoop 后,您可以在三种支持模式之一中操作 Hadoop 集群 :
本地 / 独立模式 : 在系统中下载 Hadoop 后,默认情况下,它以独立模式配置,可以作为单个 java 进程运行.
Pseudo Distributed 模式 : 它是单机上的分布式仿真. 每个 Hadoop 守护程序 (如 hdfs,yarn,MapReduce 等) 都将作为单独的 java 进程运行. 此模式对于开发非常有用.
完全分布式模式 : 此模式完全分布,最少两台或多台计算机作为群集. 我们将在接下来的章节中详细介绍这种模式.