Hadoop-1.x
skyWalker_ONLY
专注于HadoopHiveHBase等大数据生态圈,对机器学习算法具有极大兴趣
展开
-
Hadoop学习之以伪分布模式部署Hadoop及常见问题
WARNorg.apache.hadoop.hdfs.server.datanode.DataNode: Invalid directory indfs.data.dir: Incorrect permission for /home/hadoop/testData, expected:rwxr-xr-x, while actual: rwxrwxr-x2013-12-1314:57:36,1原创 2013-12-16 20:12:43 · 5388 阅读 · 0 评论 -
Hadoop学习之传递命令行参数给Mapper和Reducer
讲述了如何将自定义参数传递给特定的Job,并分析了该方法之所以可行的Hadoop源代码原创 2014-08-18 15:38:24 · 11140 阅读 · 0 评论 -
Hadoop学习之配置Eclipse远程调试Hadoop
在构建完成Hadoop项目后,接下来就应该跟踪Hadoop的运行情况,比如在命令行执行hadoop namenode–format时执行了Hadoop的那些代码。当然也可以直接通过阅读源代码的方式来做到这一点,但跟踪代码的执行情况更加直观,更容易理解。在动手配置Eclipse调试Hadoop之前,先大概学习一下JPDA(Java Platform Debugger Architecture,J原创 2014-05-11 12:48:47 · 7683 阅读 · 2 评论 -
Hadoop学习之Eclipse构建Hadoop项目
之前根据Hadoop官方文档对HDFS、MapReduce的架构、配置管理等进行了学习,但某些地方官方文档讲解的比较模糊。做过开发的人都能够体会,官方文档有些类似业务规则或者要求,而真正的细节还是需要深入研究源代码的。基于以上的原因,决定深入学习Hadoop的源代码,虽然现在已经出现Hadoop-2.x的文档版本,但还是决定学习Hadoop-1.x的源码,而要想研究源代码最好的方法还是先构建Had原创 2014-05-07 16:34:10 · 6092 阅读 · 0 评论 -
Hadoop学习之MapReduce(五)
作业的提交和监控Job为作业提交者提供了作业的视图,允许用户管理作业,提交作业,控制作业的执行和查询作业状态,比如跟踪map和reduce任务的执行进度。该类提供的set方法只有在作业已经被提交后才生效,否则将会抛出IllegalStateException异常。作业的提交过程包括:1. 检查作业的输入输出规范。2. 计算作业InputSplit的值。3.原创 2014-03-25 17:30:04 · 4425 阅读 · 1 评论 -
Hadoop学习之MapReduce(六)
在这篇文章中主要关注MapReduce作业的输入和输出,由于Hadoop版本的变化及本人对这些变化了解的还不够深入,难免有描述不清楚的地方,会在进一步学习后更正不准确的地方。作业输入InputFormat描述了MapReduce作业的输入规范。MapReduce框架依靠作业的InputFormat实现:1. 验证作业的输入规范。2. 将输入文件分割为逻辑的InputSpli原创 2014-03-26 14:28:20 · 3317 阅读 · 1 评论 -
Hadoop学习之MapReduce(四)
接下来是跟MapReduce目录结构有关的参数。首先看两个参数,分别为在core-default.xml中定义的hadoop.tmp.dir,其默认值为/tmp/hadoop-${user.name},另一个为定义在mapred-default.xml中的mapred.local.dir,该参数指定了保存MapReduce中间数据文件的目录,其默认值为${hadoop.tmp.dir}/mapre原创 2014-03-23 14:44:19 · 3809 阅读 · 1 评论 -
Hadoop学习之编译eclipse插件
最近准备开始学习Hadoop1.2.1的源代码,感觉最好的方法还是可以在运行Hadoop及hadoop作业时跟踪调试代码的实际执行情况。由于选择的IDE为eclipse,所以准备编译一下hadoop的eclipse插件,下面就直接进入正题。Hadoop的eclipse插件源代码位于hadoop-1.2.1/src/contrib/eclipse-plugin/中,直接进入该目录,在不做任何修改的情原创 2014-04-20 18:03:25 · 5695 阅读 · 0 评论 -
Hadoop学习之修改Eclipse插件
之前手工成功编译Hadoop-1.2.1的Eclipse插件后,发现了若干问题,比如生成的Mapper和Reducer还在使用Hadoop-0.x版本的一些类,为了解决这些问题并使插件能够适应Hadoop-1.2.1的变化,决定修改插件的源代码后再重新编译。首先需要确定要修改哪些类,在仔细观察了hadoop-1.2.1/src/contrib/eclipse-plugin/src/java/o原创 2014-04-30 19:48:43 · 2961 阅读 · 0 评论 -
Hadoop学习之MapReduce(三)
在学习过MapReduce框架的几个关键类和接口后(只是简单的说明了类或者接口的作用及使用方式,要想深入了解如何工作的就需要深入研究源代码了,这也是计划中的学习任务),接下来看看任务的执行和环境,主要涉及的还是一些参数。TaskTracker将mapper/reducer任务作为子进程在不同的jvm中执行,子任务继承了父进程TaskTracker的环境。用户可以通过 mapred.{map|red原创 2014-03-19 15:20:14 · 3086 阅读 · 1 评论 -
Hadoop学习之MapReduce(二)
在通过WordCount的例子直观地了解了MapReduce框架的作业如何编写后,现在对MapReduce框架中的关键接口或者类进行深入地地探索和学习。主要讲解Hadoop1.x中的接口和类,也就是org.apache.hadoop.mapreduce包中的接口和类,上面介绍的WordCount作业也是实现了这个包中的接口和类。首先会介绍Mapper和Reducer类,应用程序一般通过集成这两个类原创 2014-03-17 15:27:16 · 3503 阅读 · 1 评论 -
Hadoop学习之Hadoop集群的定制配置(二)
除了上篇博客介绍的管理hadoop后台进程的参数外,还有其它一些参数或者功能用于管理hadoop的运行方式,比如任务的启动与控制、TaskTracker节点的监控等。先看看hadoop的任务控制器。任务控制器是MapReduce框架中定义用户的map和reduce任务如何启动和控制的一些类。任务控制器可以在要求定制用户任务的启动过程或者控制过程的集群中使用,比如,在某些集群中,可能要求以提交作原创 2014-03-10 16:28:27 · 3402 阅读 · 1 评论 -
Hadoop学习之MapReduce(一)
在学习过了HDFS架构和Hadoop的配置管理后,现在学习MapReduce应用程序的编写和管理。首先简单介绍一下MapReduce框架。MapReduce是一个易于编写程序的软件框架,这些应用程序以可靠的、容错的模式并行的运行在很大规模的商用硬件集群上(数以千计的节点),处理超大数量的数据(超过TB的数据集)。一个MapReduce作业通常将输入数据集分割为独立的数据块,这些数据块被map任原创 2014-03-12 14:19:40 · 3790 阅读 · 1 评论 -
Hadoop学习之Hadoop集群的定制配置(一)
之前已经在七台物理机上以全分布模式安装了Hadoop集群,除了制动NameNode、JobTracker、DataNode、TaskTracker及相关的端口号外,并没有对集群配置做进一步的设定,都保留了默认值。而要想使Hadoop集群发挥更大的作用则需要根据实际情况对配置做修改,下面将介绍如何在Hadoop集群中对一些配置项做修改,由于运维Hadoop集群的经验尚浅难免有所遗漏或者不足。Ha原创 2014-03-05 09:27:51 · 3833 阅读 · 1 评论 -
Hadoop学习之HDFS架构(三)
现在看看HDFS的通信协议,HDFS的所有通信协议是在TCP/IP协议之上的。客户端连接到NameNode上的一个可配置的TCP端口,按照ClientProtocol协议与NameNode回话,DataNode与NameNode按照DataNodeProtocol协议进行会话。远程过程调用(RPC)包装了ClientProtocol和DataNodeProtocol。NameNode从来不初始化任原创 2014-02-20 14:25:47 · 3969 阅读 · 2 评论 -
Hadoop学习之HDFS架构(二)
HDFS可以跨越大集群中的机器可靠地存储非常大的文件,将文件存储为一系列的块,除了最后一个块外,所有的块的大小都是相同的。当然若文件大小正好为块大小的倍数则所有块的大小相同。为了容错的目的,一个文件的块会被复制成若干份,块大小和复制因子是可配置的。应用程序可以指定文件的副本数量,复制因子可以在文件创建时指定,也可以以后修改。HDFS中的文件是一次性写入的,在任何时候都是严格一次性写入的。N原创 2014-02-18 15:50:30 · 4009 阅读 · 3 评论 -
Hadoop学习之以全分布模式部署及问题
之前学习Hadoop都是在VMWare虚拟机上的Linux系统上以伪分布模式部署的,最近领导对GreenPlum比较感兴趣,申请了7台物理机,也就有机会在7台物理组成的集群中以全分布模式部署Hadoop了。在部署Hadoop之前,领导已经将该7台物理机的ssh配置好了,若不熟悉ssh的配置可以参考文章http://blog.csdn.net/skywalker_only/article/detai原创 2014-02-23 16:02:19 · 3823 阅读 · 2 评论 -
Hadoop学习之HDFS架构(一)
HDFS的全称是Hadoop Distributed File System(Hadoop分布式文件系统),是受到Google的GFS(Google文件系统)启发而设计开发出来的运行在商用主机上的分布式文件系统。最初HDFS是作为Nutch网络搜索引擎项目的基础结构发展的(在Nutch2.x版本以前,搜索到的数据存储在HDFS上,2.x版本中可以将数据存储在诸如HBase等NoSQL中),现在是H原创 2014-02-05 16:17:42 · 3892 阅读 · 0 评论 -
Hadoop-1.2.1学习之Job创建和提交源代码分析
在Hadoop中,MapReduce的Java作业通常由编写Mapper和Reducer开始,接着创建Job对象,然后使用该对象的set方法设置Mapper和Reducer以及诸如输入输出等参数,最后调用Job对象的waitForCompletion(true)方法提交作业并等待作业的完成。尽管使用了寥寥数语就描述了作业的创建和提交,但实际情况要复杂的多,本篇文章将通过分析源代码来深入学习该过程。原创 2014-10-27 16:05:50 · 3006 阅读 · 1 评论