当前位置: 首页 > 编程日记 > 正文

Hadoop学习笔记一 简要介绍

Hadoop学习笔记一 简要介绍

    这里先大致介绍一下Hadoop.
    本文大部分内容都是从官网Hadoop上来的。其中有一篇介绍HDFS的pdf文档,里面对Hadoop介绍的比较全面了。我的这一个系列的Hadoop学习笔记也是从这里一步一步进行下来的,同时又参考了网上的很多文章,对学习Hadoop中遇到的问题进行了归纳总结。
    言归正传,先说一下Hadoop的来龙去脉。谈到Hadoop就不得不提到LuceneNutch。首先,Lucene并不是一个应用程序,而是提供了一个纯Java的高性能全文索引引擎工具包,它可以方便的嵌入到各种实际应用中实现全文搜索/索引功能。Nutch是一个应用程序,是一个以Lucene为基础实现的搜索引擎应用,Lucene为Nutch提供了文本搜索和索引的API,Nutch不光有搜索的功能,还有数据抓取的功能。在nutch0.8.0版本之前,Hadoop还属于Nutch的一部分,而从nutch0.8.0开始,将其中实现的NDFS和MapReduce剥离出来成立一个新的开源项目,这就是Hadoop,而nutch0.8.0版本较之以前的Nutch在架构上有了根本性的变化,那就是完全构建在Hadoop的基础之上了。在Hadoop中实现了Google的GFS和MapReduce算法,使Hadoop成为了一个分布式的计算平台。
   其实,Hadoop并不仅仅是一个用于存储的分布式文件系统,而是设计用来在由通用计算设备组成的大型集群上执行分布式应用的框架。

   Hadoop包含两个部分:

   
1、HDFS

      即Hadoop Distributed File System (Hadoop分布式文件系统)
      HDFS具有高容错性,并且可以被部署在低价的硬件设备之上。HDFS很适合那些有大数据集的应用,并且提供了对数据读写的高吞吐率。HDFS是一个master/slave的结构,就通常的部署来说,在master上只运行一个Namenode,而在每一个slave上运行一个Datanode。
      HDFS支持传统的层次文件组织结构,同现有的一些文件系统在操作上很类似,比如你可以创建和删除一个文件,把一个文件从一个目录移到另一个目录,重命名等等操作。Namenode管理着整个分布式文件系统,对文件系统的操作(如建立、删除文件和文件夹)都是通过Namenode来控制。 
     下面是HDFS
的结构:

从上面的图中可以看出,Namenode,Datanode,Client之间的通信都是建立在TCP/IP的基础之上的。当Client要执行一个写入的操作的时候,命令不是马上就发送到Namenode,Client首先在本机上临时文件夹中缓存这些数据,当临时文件夹中的数据块达到了设定的Block的值(默认是64M)时,Client便会通知Namenode,Namenode便响应Client的RPC请求,将文件名插入文件系统层次中并且在Datanode中找到一块存放该数据的block,同时将该Datanode及对应的数据块信息告诉Client,Client便这些本地临时文件夹中的数据块写入指定的数据节点。
      HDFS采取了副本策略,其目的是为了提高系统的可靠性,可用性。HDFS的副本放置策略是三个副本,一个放在本节点上,一个放在同一机架中的另一个节点上,还有一个副本放在另一个不同的机架中的一个节点上。当前版本的hadoop0.12.0中还没有实现,但是正在进行中,相信不久就可以出来了。

   2、MapReduce的实现

      MapReduce是Google 的一项重要技术,它是一个编程模型,用以进行大数据量的计算。对于大数据量的计算,通常采用的处理手法就是并行计算。至少现阶段而言,对许多开发人员来说,并行计算还是一个比较遥远的东西。MapReduce就是一种简化并行计算的编程模型,它让那些没有多少并行计算经验的开发人员也可以开发并行应用。
      MapReduce的名字源于这个模型中的两项核心操作:Map和 Reduce。也许熟悉Functional Programming(函数式编程)的人见到这两个词会倍感亲切。简单的说来,Map是把一组数据一对一的映射为另外的一组数据,其映射的规则由一个函数来指定,比如对[1, 2, 3, 4]进行乘2的映射就变成了[2, 4, 6, 8]。Reduce是对一组数据进行归约,这个归约的规则由一个函数指定,比如对[1, 2, 3, 4]进行求和的归约得到结果是10,而对它进行求积的归约结果是24。
      关于MapReduce的内容,建议看看孟岩的这篇MapReduce:The Free Lunch Is Not Over!

   好了,作为这个系列的第一篇就写这么多了,我也是刚开始接触Hadoop,下一篇就是讲Hadoop的部署,谈谈我在部署Hadoop时遇到的问题,也给大家一个参考,少走点弯路。

转载于:https://www.cnblogs.com/lindayyh/archive/2009/10/23/1588885.html

相关文章:

Struts 2(八):文件上传

第一节 基于Struts 2完成文件上传 Struts 2框架中没有提供文件上传,而是通过Common-FileUpload框架或COS框架来实现的,Struts 2在原有上传框架的基础上进行了进一步封装,从而大大简化了文件上传的开发应用。 1.1 下载并安装Common-FileUpload…

LA3177 - Beijing Guards(二分+贪心【更优美的解法)

简介:同皇帝的烦恼 分析: 如果n是偶数,那么答案就是相邻两个人的r值之和的最大值 即ansmax{r(i)r(i1)} (i1,2,3,…,n),规定r(n1)r1 这时的ans实际上是答案的下限 一个合法的方案就是,对于编号为i的人来说&#xff0c…

Redis数据库设置密码

Redis数据库的默认打开方式为无密码打开,现在要将其设置为以密码形式打开。 Redis文件夹内容1、修改配置文件 在redis.windows.conf文件中设置密码的命令中添加requirepass 123456一行,将Redis数据库的密码设置为123456 2、运行redis-server.exe程序 3…

沉甸甸的证书,沉甸甸的心情

今天收到了由电子工业出版社易飞思公司转寄的我在由51CTO、中国图书商报、互动出版网等单位联办的“2008年度最佳技术图书和原创作者评选”活动(这是第二届了)中所获得的“2008年度最佳原创作者”证书(证书见下,非常精美&#xff…

windows :Tomcat免安装版环境变量配置 + jdk配置

1. 下载后解压,我解压的目录为:D:\Tomcat\apache-tomcat-9.0.1-windows-x64 2. 安装jdk和jre, 并配置环境变量; 2.1 用户变量新建JAVA_HOME; 2.2 系统变量CLASSPATH中添加:.;C:\Program Files\Java\jdk1.8.0_144\lib…

将数据库查询结果导出成Excel表格

使用Java代码,从数据库中获取结果集,将结果集导出成Excel表格形式。 从数据库中查询学生表所有数据,将其导出成Excel表格,点击查看学生表表结构 。 package com.test.test.test1;import com.test.test.db.StudentDb; import com.…

【Java_基础】Java中Native关键字的作用

本篇博文转载与:Java中Native关键字的作用转载于:https://www.cnblogs.com/leiblog/p/10529056.html

在SQL Server 2000 和SQL Server 2005中导出表结构

SQL Server 2000 SELECT 表名 case when a.colorder1 then d.name else end, 表说明 case when a.colorder1 then isnull(f.value,) else end, 字段名 a.name, 主键 case when exists(SELECT 1 FROM sysobjects where xtypePK and p…

百度、谷歌理念对对碰

尽管百度和谷歌哪个更好用是用户自己说了算,但它们对搜索引擎的理解和理念到底有多少异同?它们将带给用户一个怎样的搜索未来? 为了更好地看清这些问题,《第一财经日报》分别向两公司提出了如下问题,且听它们的回答.1.搜索结果提供得尽可能多,是否会提升搜索质量? 并不是搜索…

2019 GDUT Rating Contest I : Problem H. Mixing Milk

题面: H. Mixing Milk Input file: standard inputOutput file: standard outputTime limit: 1 secondMemory limit: 256 megabytesFarming is competitive business – particularly milk production. Farmer John figures that if he doesn’t innovate in his mi…

托管调试助手报错

今天在调试程序时出现下面的异常: 其他信息: CLR 无法从COM 上下文0x1a0e50 转换为COM 上下文0x1a0fc0,这种状态已持续60 秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送Windows 消息的情况下处理一个运行时间非常长的操作。这种情况通常会影…

在文件中查找指定字符串

1. 在指定文件中查看指定字符串的行数 cat file_name | grep -n "String" 2. 在多个文件中查找指定字符串 在多个指定文件中查找指定字符串,命令如下:grep -l "String" file1 file2 file3-l : 列出包含特定字符串的文件名称&#…

FPGA研发之道(25)-管脚

管脚是FPGA重要的资源之一,FPGA的管脚分别包括,电源管脚,普通I/O,配置管脚,时钟专用输入管脚GCLK等。 本文引用地址:http://www.eepw.com.cn/article/266429.htm (1)电源管脚: 通常来说&#xf…

函数组:SDIFRUNTIME

函数组:SDIFRUNTIME;Interfaces for Type Runtime Objects,获得与表相关的数据信息。 包含函数模块: DDIF_FIELDINFO_GET:DD:读取表格字段信息的接口,获得一个表中全部或部分字段的信息。DDIF_F…

原来AGILE就是这么一回事啊!

仅仅还在几年前, XP 还被认为是方法异教, FDD 属于黑客程序方法。如今,敏捷俨然已经成为主流学说,敏捷方法成为人们学习和讨论的热点。敏捷方法的应用也更加广泛,以至于不少外包项目都要求采用某种敏 捷方法。它不仅仅…

开发微信小程序入门前

开发微信小程序入门前 百牛信息技术bainiu.ltd整理发布于博客园 2016年09月21日晚 微信发不了微信“小程序”的内测版,一时间整个互联网都炸了锅。个大新闻、论坛都在讨论这个事情。 作为互联网的一猿,我们怎能不紧跟时代的脚步。于是第二天上午也对微信…

hive的join

第一:在map端产生join mapJoin的主要意思就是,当链接的两个表是一个比较小的表和一个特别大的表的时候,我们把比较小的table直接放到内存中去,然后再对比较大的表格进行map操作。join就发生在map操作的时候,每当扫描一…

表格在线转换工具

表格在线转换工具 :https://tableconvert.com/ —— END ——

Android之View绘制流程源码分析

版权声明:本文出自汪磊的博客,转载请务必注明出处。 对于稍有自定义View经验的安卓开发者来说,onMeasure,onLayout,onDraw这三个方法都不会陌生,起码多少都有所接触吧。 在安卓中,一个View显示到…

看不懂的生成函数

不得不说这个东西真是妙啊 遭到了降智打击 生成函数又叫做母函数,主要用于解决一些组合数学问题 对于一个数列\(\{f_0,f_1,f_2,...,f_n\}\) 我们定义其生成函数为 \[F(x)f_0f_1xf_2x^2...f_nx^n\] 也就是 \[F(x)\sum_{i0}^nf_ix^i\] 也就是把数列的每一项当成了多项…

Coolite Toolkit学习笔记五:常用控件Menu和MenuPanel

Coolite Toolkit里的Menu控件和其他的.NET Web控件不一样,如果只是设计好了Menu或是通过程序初始化菜单项,菜单是不会呈现在界面上的,因为Coolite Toolkit规定Menu控件需要一个容器来做依托,而这个让Menu依托的控件就是MenuPanel&…

解决Neither the JAVA_HOME nor the JRE_HOME environment variable is defined问题

问题描述: 在cmd窗口使用 startup 命令启动Tomcat时,出现 Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program 错误提示,如下如所示。 解…

在 Windows XP 中,无法使用 Windows 图片和传真查看器来查看图片

在 Microsoft Windows XP 中试图使用 Windows 图片和传真查看器查看图片时,图片未按预期显示。不过,当使用 Microsoft 画图工具查看图片时,图片会按预期显示。注意:Windows 资源管理器中可能不会显示某些图片缩略图。 发生这种现象…

前端常用正则表达式

前端常用的正则表达式 通过一些例子来学习正则表达式摘录,js正则函数match、exec、test、search、replace、split //去除首尾的‘/’input input.replace(/^\/*|\/*$/g,);javascript:; 、javascript:void(0)javascript:;.match(/^(javascript\s*\:|#)/);//["j…

BeanShell使用json.jar包处理Json数据

环境准备 ①Jmeter版本 ,JDK ②前置条件:将json.jar包置于..\lib\下, 如果还是报错,可以将该jar包添加到测试计划的Library中;否则会报:Typed variable declaration : Class: JSONObject not found in nam…

ES6 let和const 命令

ES6 let 和 const 命令1. 变量声明2. 变量提升问题3. 暂时性死区(TDZ)4. 块级作用域4.1 为什么需要块级作用域?4.2 ES6的块级作用域4.3 块级作用域和函数声明1. 变量声明 ES5 只有两种声明变量的方法:var命令和function命令。 ES6 新增了let命令和cons…

jQuery的Tab插件 Tabtastic

Tabtastic 是一个 jQuery 用来实现 Tab 窗体的插件,支持 Tab 嵌套以及动态内容加载。 下面是源文件下载:Tabtastic转载于:https://www.cnblogs.com/zhulidong/archive/2009/11/01/1593753.html

另类×××应用(三):不花一分钱,实现总部和多分支机构网络互联

[本文高清PDF版,在文章最后的附件提供下载,欢迎下载查阅] 【需求分析】(一)我们面临的问题。Freesky公司是一家在台湾和大陆都有很多分支机构的大饼油条连锁经销商,大陆总部在宁波,在宁波、温州、上…

[SDOI2017]天才黑客

传送门 Description 给出一张带边权的有向图,每个边都上都有一个字符串(给出对应Trie树上的节点),一条路径的长度为路径上的边权之和相邻两条边的字符串的lcp长度之和。 求从1到其它节点的最短路 Solution 预备部分 首先&#…

spine - unity3D(摘自博主softimagewht)

摘自&#xff1a;&#xff08;博主 http://www.cnblogs.com/softimagewht/p/4149118.html&#xff09; //skeletonDataSkeletonAnimation skeletonAnimation GetComponent<SkeletonAnimation>();Debug.Log(skeletonAnimation.name);//获取角色名Debug.Log(skeletonAnima…