问题导读:
1.hadoop编程须要哪些基础?
2.hadoop编程须要注意哪些问题?
3.如何建立mapreduce程序及其包含几部分?
4.如何远程链接eclipse,可能会遇到什么问题?
5.如何编译hadoop源码?
阅读此篇文章,须要些基础下面两篇文章
零基础学习hadoop到上手工做线路指导(初级篇)
零基础学习hadoop到上手工做线路指导(中级篇)
若是看过的话,看这篇不成问题,此篇讲hadoop编程篇。
hadoop编程,hadoop是一个Java框架,同时也是编程的一次革命,使得传统开发运行程序由单台客户端(单台电脑)转换为能够由多个客户端运行(多台机器)运行,使得任务得以分解,这大大提升了效率。
hadoop既然是一个Java框架,由于咱们必需要懂Java,网上有大量的资料,因此学习Java不是件难事。可是学到什么程度,多是咱们零基础同窗所关心的。
语言不少状况下都是相通的,若是你是学生,还处于打基础的阶段,那么难度对于你来讲仍是不小的。
1.初学者要求必须有理论基础,而且可以完成一个小项目,最起码可以完成几个小例子,例如图书馆里等。
初学者基本的要求:
(1)懂什么是对象、接口、继续、多态
(2)必须熟悉Java语法
(3)掌握必定的经常使用包
(4)会使用maven下载代码
(5)会使用eclipse,包括里面的快捷键,如何打开项目
传统程序员,由于具备丰富的编程经验,所以只要可以掌握开发工具:
(1)会使用maven下载代码
(2)会使用eclipse,包括里面的快捷键,如何打开项目
(3)简单熟悉Java语法
上面的只是基础,若是想开发hadoop,还须要懂得下面内容
(1)会编译hadoop
(2)会使用hadoop-eclipse-plugin插件,远程链接集群
(3)会运行hadoop程序。
上面列出大概的内容,下面咱们具体说一些须要学习的内容。
不管是传统开发人员仍是学生,零基础下面都是须要掌握的:
咱们就须要进入开发了。开发零基础,该如何,我们提供了相关的内容分别介绍下面文章
学习hadoop----java零基础学习线路指导视频(1)
这一篇咱们使用什么开发工具,甚至考虑使用什么操做系统。而后就是Java基础知识篇,包括变量、函数等。
学习hadoop---Java初级快读入门指导(2)
第一篇是属于思想篇,那么这一篇属于实战篇,经过不一样的方式,交给你怎么编写第一个小程序。
Java零基础:一步步教你如何使用eclipse建立项目及编写小程序实例
因为上面没有真正抽象出eclipse的使用,因此这里专门介绍了使用eclipse如何建立项目,及如何编写小程序实例
java基础:eclipse编程不得不知道的技巧
eclipse基本知识会了以后,咱们在项目,这些技巧至关有用,并且常常用到
1、考虑开发环境
上面是咱们打基础,有了这些基础,咱们就开始学习开发hadoop了,可是咱们该怎么搭建环境,咱们知道Windows有3二、64位之分,jdk也有,那么该如何解决,咱们在window32位上须要使用32位jdk,64位则使用64位jdk,一样若是Linux则使用Linux32位于64位。
更详细,能够参考零基础利用Java开发hadoop须要考虑的问题
2、使用J2SE、J2EE
使用Java咱们须要总体了解Java语言,Java包含下面三种
html
J2EE java企业版,主要用于web开发java
J2SE java 标准版,主要用于WEB开发,可是缺乏企业版的一些特性,通常状况下java下的应用都是指J2SE的开发。mysql
J2ME java 微小版,主要用于手机等的开发
git
所以若是咱们想处理、并展现数据,可使用J2EE,更详细参考
hadoop开发--Java零基础之J2EE、J2SE、J2ME的区别
3、对Java有了必定的认识,咱们开始使用Java
1.环境变量配置
对于惯用集成环境的开发者来说,这有点不适应,好比.net,安装开发环境vs,直接开发就行了,为啥还须要配置环境变量。
环境变量可让咱们找到jdk的命令,这个或许.net的一点好处,就是都封装起来了。别的不用关心了。对于环境变量,咱们
须要配置java_home,path路径,更详细参考:
hadoop开发--Java零基础之开发工具环境变量配置
2.开发工具选择
开发工具备不少种,不一样的人习惯不一样,开发工具也不同,这里列出我的认为比较经常使用
1.eclipse
2.MyEclipse
3.maven
更多工具参考hadoop开发—Java零基础,开发选择什么开发工具比较合适
而其中maven能够和eclipse一块儿使用,也能够单独使用,后面开发中它仍是比较经常使用的,好比咱们下载hadoop源码,编译hadoop,都是须要maven来完成的。
maven的学习能够参考
源码编译maven系列视频教程汇总
3.Java编译
Java能够一处编译到处运行,缘由是由于jvm。编译后的效果,能够查看:
Java零基础,学习hadoop:为何要编译Java源代码,编译后会有什么效果
4.如何打开Java项目
Java项目的开发,仍是比较特别的,是经过导入的方式,折合其它好比.net项目,直接点击图标就能打开,Java项目,例如经过eclipse的import导入,详细参考下面帖子:
零基础教你如何导入Java项目到eclipse中
5.Java资源下载:
上面补充了一些基本的知识,可能还不够全面,若是缺乏这方面的知识,有两种办法:
1.百度,查看视频,缺什么看什么视频
2.若是想本身何时,都能看,能够下载下面的资源
javaWeb图书馆管理系统源码mysql版本
Java使用hadoop开发基础:Javaweb视频共享
几百GJava文件共享
java百G内容下载:包含自学,入门,高级应用,案例等
Java基础完毕,咱们终于能够开发了,其实开发也并不怎么困难,常常遇到的问题以下:
1.使用插件链接不上集群
windows下链接集有两个缘由
1.用户名不一致
解决办法:
一、若是是测试环境,能够取消hadoop hdfs的用户权限检查。打开conf/hdfs-site.xml,找到dfs.permissions属性修改成false(默认为true)OK了。(1.2.1 版本只有这个方法可行),如何操做能够参考第一个问题。
二、修改hadoop location参数,在advanced parameter选项卡中,找到hadoop.job.ugi项,将此项改成启动hadoop的用户名便可
3 修改window 机器的用户名为 hadoop 用户名。
2.运行mapreduce程序的时候,会检查权限
根据hadoop开发方式总结及操做指导
咱们知道hadoop开发可使用插件,也能够不使用插件,若是不使用插件开发可能会遇到下面问题
解决办法修改下权限就行了
windows eclipse运行mapreduce遇到权限问题该如何解决
3.缺乏hadoop.dll,以及winutils.exe
(1)缺乏winutils.exe回报以下错误:
Could not locate executable null \bin\winutils.exe in the hadoop binaries
windows经过hadoop-eclipse-plugin插件远程开发hadoop运行mapreduce遇到问题及解决
(2)缺乏hadoop.dll
错误以下:
Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
解决办法:
1.首先将hadoop.dll放到hadoop的bin目录下,以下图所示
2.配置hadoop home及path
path,这里使用的是绝对路径,path里面配置的是hadoop的bin路径。配置完毕,切忌重启机器
以下图所示
包及插件的下载,能够在这里面找
hadoop家族、strom、spark、Linux、flume等jar包、安装包汇总下载(持续更新)
上面总结了咱们开发环境中常常遇到的问题,上面问题打了预防针,咱们后面在链接的时候,就会顺利多了。
上面主要讲的window远程链接集群,还有另一种就是Linux链接集群,这个遇到的问题很少,后面也有所涉及
开发hadoop,能够在Linux下,也能够在window下面
这里主要讲的是window下面:
该如何远程链接hadoop集群
对于不一样版本不一样的配置,远程链接的配置有所不一样,特别是端口的配置,可是整体的步骤是差很少的,下面分别是hadoop1.X与hadoop2.X
1.插件远程链接
hadoop1.X
hadoop开发方式之一:利用插件开发指导
hadoop2.X
新手指导:Windows上使用Eclipse远程链接Hadoop进行程序开发
hadoop2.2 eclipse连接hdfs(hadoop)
配置Hadoop 2.x开发环境(Eclipse)
2.远程链接问题
链接中存在问题上面总结了一部分,好比插件、缺.dll、版本等问题
Win7中使用Eclipse链接虚拟机中的Ubuntu中的Hadoop2.4经验总结
windows 7 使用 eclipse 下hadoop应用开发环境搭建及问题总结
3.运行mapreduce
已经链接上集群,咱们开始运行能够编程了,这里面咱们能够操做hdfs,以下例:
hadoop实战:Java对hdfs的编程
Java建立hdfs文件实例
Java操做HDFS错误总结
固然操做hdfs,会遇到权限问题,修改hdfs-site.xml便可,咱们不在重复。
除了操做hdfs上传下载文件等操做,咱们还须要完成必定的功能,好比wordcount等简单功能。这里面编程完成三方面内容:
1.map函数,起到分割的做用
2.reduce函数,处理而后汇总
3.main()驱动。
4.如何带参数还须要继续Tool接口,带参数详细参考
如何编写运行带参数输入输出路径hadoop程序
(1)建立mapreduce
运行mapreduce参数参考下面:
咱们首先能够完成必定的功能,功能的实现,能够参考
MapReduce初级案例(1):使用MapReduce去重
MapReduce初级案例(2):使用MapReduce数据排序
MapReduce初级案例(3):使用MapReduce实现平均成绩
经过上面的实现,这里有一个例子,能够放到项目中,直接运行,固然你须要建立数据文件,及根据本身的实际状况修改uri,也就是hdfs://。。。须要修改为本身的内容。
新手指导,该如何在开发环境中,建立mapreduce程序
若是咱们对mapreduce有一个深度的了解,咱们能够把大部分程序转换为mapreduce来实现,详细参考如何让传统程序转换成mapreduce
hadoop编程须要注意的问题虽然hadoop是Java语言编写的,可是其有本身的数据类型,及而且可能会遇到编码问题,同时因为mapreduce的分区,采用的是hash算发,下面的内容,能够了解一下
hadoop编程基础:数据类型介绍及与Java数据类型之间转换
eclipse 调试hadoop须要注意编码问题
hadoop基础:Java中的Hash值介绍
(2)运行mapreduce
建立完毕,咱们有两种方式运行mapreduce,一种打包到集群运行,一种在eclipse中运行。
hadoop集群,如何运行Java jar包---如何运行mapreduce程序
打包集群运行:参考下面内容
java零基础:将java源码打成jar包各类方法介绍
hadoop编程:解决eclipse能运行,打包放到集群上ClassNotFoundException:经验总结
(3)运行中会遇到的问题
在开头已经说了一些经典的问题,这里在列出一些相关帖子。
1.eclipse中开发Hadoop2.x的Map/Reduce项目汇总
阐述了下面问题:
程序员
1.如何建立MR程序?web
2.如何配置运行参数?sql
3.HADOOP_HOME为空会出现什么问题?编程
4.hadoop-common-2.2.0-bin-master/bin的做用是什么?ubuntu
扩展:小程序
4.winutils.exe是什么?
2.Win7 Eclipse调试Centos Hadoop2.2-Mapreduce出现问题解决方案
阐述下面问题:
1.建一个MapReduce Project,运行时发现出问题:Could not locate executable null,该如何解决?
2.Could not locate executabl ....\hadoop-2.2.0\hadoop-2.2.0\bin\winutils.exe in the Hadoop binaries.该如何解决?
3.win7下使用hadoop-eclipse-plugin插件开发添加了hadoop.dll不生效
4.经过eclipse中的Java API上传至集群为何replication默认3份,该如何设置
5.eclipse运行出现 Call From to master:8020 failed on connection exception:
6.hadoop eclipse插件出现问题
7.Linux下面eclipse链接报错,请教大神
(4)mapreduce调试:
调试的方法有多种,这里说一种最简单、原始的一种。
记得Javascript刚开始之初是不能调试的,因而咱们就采用alert的方法,看看结果是否是咱们想要的,这里咱们调试mapreduce采用的是相似的方法。咱们经过Counter countPrint1 = context.getCounter("Map中循环strScore", “输出信息”);来输出调试信息,getCounter能够把程序里面的变量输出到Java控制台,这样就达到了调试效果。
详细参考:
Hadoop中调试(mapreduce)map与redcue信息的输出办法
固然还有其余调试方法,能够参考下面
Win7 Eclipse调试Centos Hadoop2.2-Mapreduce出现问题解决方案
调试Hadoop源代码:eclipse调试及日志打印
4.获取源码、阅读源码
获取源码能够经过git,maven等方式。
(1)maven
maven能够单独使用,也能够做为插件放在eclipse中,因为hadoop src采用的是maven的方式,因此咱们须要学习和使用maven。
eclipse maven plugin 插件安装和配置及maven实战书籍下载
源码编译maven系列视频教程汇总
若是看了上面的内容,那么咱们对maven已经算是很熟悉了,能够经过maven获取hadoop源码了,在获取的源码的时候,最起码要保持网络畅通,如何获取,以及查看hadoop源码,查看的时候,咱们还须要关联一些包,不然会出现下面状况,source not found。
更多内容,详细可参考:
从零教你如何获取hadoop2.4源码并使用eclipse关联hadoop2.4源码
Eclipse查看hadoop源代码出现Source not found,是由于没有添加.zip
在eclipse中编辑hadoop2.2.0源代码指导
源码获取了,咱们该如何查看阅读源码,如何经过eclipse查看类的定义,函数的实现,经过下面帖子便可达到咱们的目的。
如何经过eclipse查看、阅读hadoop2.4源码
(2)其它获取源码工具git、svn
源码管理、获取网络源码工具:TortoiseSVN使用手册
Eclipse上GIT插件EGIT使用手册
5.编译hadoop源码
源码编译,刚开始仍是比较复杂的,须要安装很多的软件包括maven、protobuf、CMake、ant等工具的安装,编译完毕以后,咱们就能够安装了。更详细,能够查看下面内容
从零教你在Linux环境下(ubuntu)如何编译hadoop2.4
Hadoop 源代码 eclipse 编译教程
对于编译的.class文件,若是想查看源码,能够经过反编译工具实现
java的class文件反编译和Eclipse、MyEclipse反编译插件安装、使用
6.插件制做
eclipse开发,有的同窗,感兴趣,想制做插件,能够查看下面内容
Hadoop2.4.0 Eclipse插件制做
Hadoop2.4.0 Eclipse插件制做及问题记录
Hadoop 2.2.0编译hadoop-eclipse-plugin插件
7.资源:
因为一些同窗常常找不到安装包、插件等,这里汇总一些资源:
hadoop家族、strom、spark、Linux、flume等jar包、安装包汇总下载(持续更新)
hadoop2.4汇总:hadoop2.4插件下载、彻底分布式、伪分布、eclipse插件开发大全
hadoop-eclipse-plugin-2.2.0.jar插件包分享