mapreduce
mapreduce
赶路人儿
一个十年以上编程人员,擅长使用java、python、C++等语言,具有广告投放、个性化推荐引擎等超大规模系统开发经验。
展开
-
MapReduce:详解Shuffle过程
Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方。要想理解MapReduce, Shuffle是必须要了解的。我看过很多相关的资料,但每次看完都云里雾里的绕着,很难理清大致的逻辑,反而越搅越混。前段时间在做MapReduce job 性能调优的工作,需要深入代码研究MapReduce的运行机制,这才对Shuffle探了个究竟。考虑到之前我在看相关资料而看不懂时很恼火,所以在这里转载 2015-03-23 11:32:45 · 760 阅读 · 0 评论 -
[Hadoop源码解读](三)MapReduce篇之Job类
下面,我们只涉及MapReduce 1,而不涉及YARN。当我们在写MapReduce程序的时候,通常,在main函数里,我们会像下面这样做。建立一个Job对象,设置它的JobName,然后配置输入输出路径,设置我们的Mapper类和Reducer类,设置InputFormat和正确的输出类型等等。然后我们会使用job.waitForCompletion()提交到JobTrac转载 2015-04-24 16:15:36 · 1050 阅读 · 0 评论 -
[Hadoop源码解读](五)MapReduce篇之Writable相关类
前面讲了InputFormat,就顺便讲一下Writable的东西吧,本来应当是放在HDFS中的。 当要在进程间传递对象或持久化对象的时候,就需要序列化对象成字节流,反之当要将接收到或从磁盘读取的字节流转换为对象,就要进行反序列化。Writable是Hadoop的序列化格式,Hadoop定义了这样一个Writable接口。public interface Writable {转载 2015-04-24 16:44:50 · 925 阅读 · 0 评论 -
Win7 eclipse 调试远程Hadoop Failed to set permissions of path
hadoop1.2.1在windows远程调试linux的程序时,报错:12/04/24 15:32:44 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable12/04/24转载 2015-04-16 15:23:12 · 706 阅读 · 0 评论 -
[Hadoop源码解读](二)MapReduce篇之Mapper类
前面在讲InputFormat的时候,讲到了Mapper类是如何利用RecordReader来读取InputSplit中的K-V对的。 这一篇里,开始对Mapper.class的子类进行解读。先回忆一下。Mapper有setup(),map(),cleanup()和run()四个方法。其中setup()一般是用来进行一些map()前的准备工作,map()则一般转载 2015-04-24 14:29:02 · 1189 阅读 · 0 评论 -
搭建Eclipse下运行Mapreduce代码的环境
1、下载hadoop1.2.1.tar.gz文件,直接解压到D盘即可;2、编译对应版本的hadoop-eclipse插件(可以看下一片文章,如何编译hadoop-eclipse插件)。把编译好的jar拷贝到eclipse/plugins下,重启eclipse即可;3、若插件安装成功的话,打开Window-->Preferens,会发现Hadoop Map/Reduce选项,在这个选项里需要原创 2015-04-16 16:41:07 · 1164 阅读 · 0 评论 -
重新格式化HDFS的方法
由于多次格式化hdfs,可能会导致namenode无法启动,所以如果要重新格式化时,需要按如下步骤进行:1、查看hdfs-ste.xml: dfs.name.dir /home/hadoop/hdfs/name namenode上存储hdfs名字空间元数据 dfs.data.dir /home/hadoop/hdsf/data转载 2015-04-09 11:22:16 · 2370 阅读 · 0 评论 -
[Hadoop源码解读](四)MapReduce篇之Counter相关类
当我们定义一个Counter时,我们首先要定义一枚举类型:public static enum MY_COUNTER{ CORRUPTED_DATA_COUNTER, NORMAL_DATA_COUNTER }; 然后,我们就可以在mapper或reducer里面增加它的值:context.getCounter(MY_COUNTER.CORRUPTED_DATA_转载 2015-04-24 16:38:24 · 784 阅读 · 0 评论 -
hadoop端口号列表
常用的端口配置HDFS端口参数描述默认配置文件例子值fs.default.namenamenode RPC交互端口8020core-site.xmlhdfs://master:8020/dfs.http.address NameNode web管理端口5007转载 2015-04-09 22:41:29 · 1375 阅读 · 0 评论 -
eclipse中连接不上hdfs,显示refuse connection 解决方法
eclipse中连接不上hdfs,显示refuse connection。解决:a.取消hdfs的安全模式 hadoop dfsadmin -safemode leave b. 在eclipse的hdfs 对话框“edit hadoop location” 中,Mapreduce/mast的ip和端口要和linux上mapred-site.xml的一致;Dfs原创 2015-04-09 23:06:33 · 4597 阅读 · 1 评论 -
java.lang.NoSuchFieldError: INSTANCE in HttpClient when running hadoop
今天运行mr代码,在本地调试都没有问题,放到线上发现一直报错:java.lang.NoSuchFieldError: INSTANCE in HttpClient when running hadoop经过排查,发现是由于map中用到了HttpClient(4.5)的依赖,而hadoop中自带了另一个版本的httpClient.jar,导致jar冲突。解决方法可以使用map-job-use原创 2016-11-21 18:54:46 · 2412 阅读 · 0 评论 -
基于Map-Reduce的相似度计算
基于Map-Reduce的相似度计算转载请注明:http://blog.csdn.NET/xinzhangyanxiang/article/details/9288589不久前(6.29),参加了ChinaHadoop的夏季沙龙,听了人人的大牛讲了基于Map-Reduce的相似度计算的优化,感觉对Map-Reduce编程模型的理解又进一步加深了,在这里把该算法总结成博文,以期能够更加透彻的转载 2017-03-22 10:52:47 · 1020 阅读 · 0 评论 -
[Hadoop源码解读](一)MapReduce篇之InputFormat
平时我们写MapReduce程序的时候,在设置输入格式的时候,总会调用形如job.setInputFormatClass(KeyValueTextInputFormat.class);来保证输入文件按照我们想要的格式被读取。所有的输入格式都继承于InputFormat,这是一个抽象类,其子类有专门用于读取普通文件的FileInputFormat,用来读取数据库的DBInputFormat等等。转载 2015-04-24 10:26:12 · 718 阅读 · 0 评论 -
java操作hdfs
在eclipse中创建一个java工程,然后导入hadoop中的7个jar包(如图);如果为了方便调试hadoop源码,可以关联到hadoop的源码。引入hadoop安装包中的7个jar关联hadoop源码:1、使用URL的方式读取hdfs中的数据,这种方式和使用浏览器查看hdfs中的数据一样;缺点是只能读取,不能上传、删除等:public st原创 2015-04-14 16:17:30 · 1044 阅读 · 0 评论 -
使用eclipse查看hadoop源码
1、下载hadoop,在windows上使用winrar解压开。这里我用的是hadoop1.2.1,下载地址:http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/hadoop/common/注:在linux上安装配置hadoop,只需要把下载的hadoop1.2.1.tar.zp解压后,修改conf下的hadoop-env.sh、core-sit原创 2015-04-11 17:03:14 · 1229 阅读 · 0 评论 -
mapreduce输出结果到mysql
Mapreduce程序在reduce阶段执行后,默认会把结果输出到hdfs文件系统上(使用context.wirte()),如果要把结果写到mysql中,需要重写Writable、DBWritable这两个类中的方法。以wordCount程序为例,下面讲解如何把word和count输出到mysql中。1、首先在mysql中创建表test,结构如下test (id bigint(20),na原创 2015-04-22 16:54:46 · 1408 阅读 · 0 评论 -
HDFS的基本shell操作
(1)分布式文件系统随着数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 。它是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间。而它最主要的特性就是通透性。让实际上是通过网络来访问文件的动作,由程序与用户看来,就转载 2015-04-11 23:08:34 · 1067 阅读 · 0 评论 -
HDFS读书笔记-总体介绍(一)
一直以来对hadoop相关系列的学习都是较为零散的,不成体系。没有经过自己总结和沉淀的资料也很难长久的消化和在工作中实际运用。故而也希望通过这样系列的方式对所学习,所了解的资料进行总结。HDFS(Hadoop Distributed File System)顾名思义,是hadoop的分布式文件系统。HDFS是hadoop的一个子项目。Hadoop的名字在这里也提一下,是作者小孩很喜转载 2015-04-12 17:14:23 · 738 阅读 · 0 评论 -
HDFS读书笔记-了解NameNode(二)
简单来讲,NameNode就是HDFS的大脑,任何客户端或者DataNode的数据迁移、目录操作都是由NameNode来完成的。 再了解了NameNode会干什么事情之后,最好深入的办法就是来看NameNode有哪些重要的数据结构,每个数据结构都干什么事情。 我们提到NameNode主要是维护文件在哪里这个映射关系。故而主要包含的内容是:转载 2015-04-12 17:30:15 · 781 阅读 · 0 评论 -
HDFS的存储结构以及写入、读取hdfs数据操作流程简单总结
一、NameNode数据结构1、物理结构${dfs.name.dir}/current/{VERSION,edits,fsimage,fstime}dfs.name.dir是一个目录列表,存储每个目录的镜像。VERSION文件是Java属性文件,包含运行HDFS的版本信息。edits,是编辑日志文件。当客户断执行写操作的时,NameNode首先会在编辑日志中写下记录,并转载 2015-04-12 21:57:18 · 2714 阅读 · 0 评论 -
上传文件到HDFS方式
hadoop计算需要在hdfs文件系统上进行,因此每次计算之前必须把需要用到的文件(我们称为原始文件)都上传到hdfs上。文件上传到hdfs上通常有三种方法:1、 hadoop自带的dfs服务,put;2、 hadoop的API,Writer对象可以实现这一功能;3、 调用OTL可执行程序,数据从数据库直接进入hadoop 将1、2方案进行对比,如下:转载 2015-04-12 17:40:58 · 7443 阅读 · 0 评论 -
MapReduce直接连接MySQL获取数据
MySQL中数据:mysql> select * from linuxidc_tbls;+---------------------+----------------+| TBL_NAME | TBL_TYPE |+---------------------+----------------+| linuxidc_test_table转载 2015-04-23 16:50:36 · 4221 阅读 · 0 评论 -
HDFS读书笔记-如何让NameNode高可用(三)
高可用名字听着挺虚,目的很简单,让应用或服务在任何时候都可以提供服务。 NameNode最关键的问题在于有单点的风险,一旦NameName挂掉,整个HDFS都无法提供服务。大脑坏掉了,身体也是无法行动的。 对于高可用的方案,业界一般通常使用两种类型的手段。 1:主备(Master-Slave) 2:集群(Cluster)转载 2015-04-12 17:35:03 · 1670 阅读 · 0 评论 -
HADOOP-RPC机制
一、RPC基本概念:1、RPC,即Remote Procdure Call,中文名:远程过程调用; (1)它允许一台计算机程序远程调用另外一台计算机的子程序,而不用去关心底层的网络通信细节,对我们来说是透明的。因此,它经常用于分布式网络通信中。 (2)Hadoop的进程间交互都是通过RPC来进行的,比如Namenode与Datanode直接,Jobtracker与Tasktr原创 2015-04-14 18:14:09 · 1065 阅读 · 0 评论 -
hadoop 文件划分,map执行浅析
在执行一个Job的时候,Hadoop会将输入数据划分成N个Split,然后启动相应的N个Map程序来分别处理它们。数据如何划分?Split如何调度(如何决定处理Split的Map程序应该运行在哪台TaskTracker机器上)?划分后的数据又如何读取?这就是本文所要讨论的问题。先从一张经典的MapReduce工作流程图出发:1、运行mapred程序;2、本次运行将生成一个J转载 2015-04-08 22:16:37 · 1724 阅读 · 2 评论 -
MapReduce 读取ORC格式文件
1、创建orc格式hive表:create table test_orc(name string,age int) stored as orc2、查看表结构:show create table test_orcCREATE TABLE `test_orc`( `name` string, `age` int)ROW FORMAT SERDE 'org.apache.ha转载 2017-11-23 18:39:30 · 5802 阅读 · 0 评论