在此之前,分享知乎上看到的关于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进程运行.此模式对于开发非常有用.
完全分布式模式 : 此模式完全分布,最少两台或多台计算机作为群集.我们将在接下来的章节中详细介绍这种模式.