Linux 本地调试Hadoop
将Hadoop部署后,可以使用java api进行访问,但是并不能像安装完mysql后用python自带的mysql api连接那么简单。
Hadoop/share目录下有Hadoop所有的jar包,意义在于其所有的行为逻辑都被封装在这里面,例如class,function这些“代码”,使用maven编译hadoop的src的意义就是将*.java编译成jar,类似于c++需要编译一样,不同于py这种边运行边编译的语言。
已经启动的Hadoop服务在尝试进行读取行为逻辑的时候会去jar里面找,这些jar里面有所有的类、函数,虽然有些服务不会用到,例如本该交给client使用的copyFromLocalFile等(也可能会用到。。),但是反正它就是有了。。
客户端进行import的时候,类似于python import的时候如果import的不是自带的库,就得下载到本地然后import路径,java的maven项目也需要使用pom.xml来定义*.java里面的import的东西的位置。
客户端import的package,并非是一个*.java文件,而是一个jar包,而且不能直接引用,需要使用maven将这个jar包打包到本地仓库,然后给一个uuId(groupId,artifactId,version,他们其实是由package和函数决定的,例如org.apache.hadoop.fs.FsDataOutPutStream,前4位是包名,最后的是这个包的function or class,它们属于Hadoop的commom区域,最后会属于hadoop-common,你会在hadoop-common.jar中找到这个流类的定义 ),客户端import的时候不仅需要写上import的东西,还需要在pom.xml里面写上uuid,这时才能指定maven项目中的引用的jar包的位置。
像org.apache.hbase这种maven自带的库,只需要写上pom.xml,然后更新maven项目,如果它不在你的本地仓库里面,就会将指定的version下载到本地仓库。
可以看出客户端和服务端并非依赖同一个物理意义上的jar包,即它们的版本可能不同,客户可能会尝试调用服务器提供的一个不存在的函数。
可以手动对一个jar包进行打包,也可以使用maven打开一个project,就会自动进行该项目的打包。
所以想更改本地Hadoop的源码,流程应该是:
更改hadoop-src代码 -> maven编译hadoop-src -> 形成新版本的jar包(存在于hadoop/share下) -> cp overwrite hadoop/share目录 (直接更换目前hadoop集群的jar包,不然重新搭建还费时间) -> 对更改过的jar包进行maven打包到本地仓库(使得客户端和服务器端的jar包同步,uuId中的version就是为了区分同一区域的jar包的不同版本) -> 更改客户端代码和pom文件中的version -> maven对客户端代码进行打包 -> hadoop jar 打包后的客户端代码(其实也有直接run的办法)
Linux 本地调试Hadoop的更多相关文章
- windows下本地调试hadoop代码,远程调试hadoop节点。
1.在github上搜索下载winutils.exe相关的一套文件,下载对应hadoop的版本. 2.将所有文件复制到hadoop的bin目录下 3.将hadoop.dll复制到windows\sys ...
- 四.idea本地调试hadoop程序
目录: 目录见文章1 1.先上案例代码 WordCount.java: import java.io.IOException; import java.util.StringTokenizer; im ...
- 用python + hadoop streaming 编写分布式程序(一) -- 原理介绍,样例程序与本地调试
相关随笔: Hadoop-1.0.4集群搭建笔记 用python + hadoop streaming 编写分布式程序(二) -- 在集群上运行与监控 用python + hadoop streami ...
- hadoop本地调试方法
Mapreduce 是Hadoop上一个进行分布式数据运算和统计的框架,但是每次运行程序的时候都需要将程序打包并上传的集群环境中运行,这就会让程序的调试变得十分不方便.所以在这里写下这篇博客和大家交流 ...
- windows本地调试安装hadoop(idea) : ERROR util.Shell: Failed to locate the winutils binary in the hadoop binary path
1,本地安装hadoop https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/ 下载hadoop对应版本 (我本意是想下载hadoop ...
- eclipse/intellij idea 远程调试hadoop 2.6.0
很多hadoop初学者估计都我一样,由于没有足够的机器资源,只能在虚拟机里弄一个linux安装hadoop的伪分布,然后在host机上win7里使用eclipse或Intellj idea来写代码测试 ...
- mapreduce 本地调试需要注意的问题
1.写好的程序直接在hadoop集群里面执行 2.如果需要在本地调试,需要注释掉mapred-site.xml <configuration> <!-- <property&g ...
- Linux GDB调试全面解析
GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,GDB主要可帮助工程师完成下面4个方面的功能: 启动程序,可以按照工程师自定义的要求随心所欲的运行程序. 让被调试的程序在工程师指定的断 ...
- linux内核调试指南
linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 ...
随机推荐
- python 通过文件路径获取文件hash值
import hashlib import os,sys def CalcSha1(filepath): with open(filepath,'rb') as f: sha1obj = hashli ...
- Runtime Permission.
http://blog.csdn.net/lmj623565791/article/details/50709663: 本文出自:[张鸿洋的博客] 一.概述 随着Android 6.0发布以及普及,我 ...
- flatpickr功能强大的日期时间选择器插件
flatpickr日期时间选择器支持移动手机,提供多种内置的主题效果,并且提供对中文的支持.它的特点还有: 使用SVG作为界面的图标. 兼容jQuery. 支持对各种日期格式的解析. 轻量级,高性能, ...
- linux 下路由配置
转自 https://www.cnblogs.com/kevingrace/p/6490627.html 在日常运维作业中,经常会碰到路由表的操作.下面就linux运维中的路由操作做一梳理:----- ...
- HTML5游戏开发系列教程5(译)
原文地址:http://www.script-tutorials.com/html5-game-development-lesson-5/ 最终我决定准备下一篇游戏开发系列的文章,我们将继续使用can ...
- Vmwaretools
先下载Vmwaretools 这一步是设置ubuntu的超级用户root的密码我设置为dong 转换为root用户操作 执行 perl程序 然后就是一路Enter,开始关机重启就行了 来自为知笔记 ...
- mysql数据库优化的几种方法
1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽 ...
- PL/SQL编程—函数
SQL> select * from mytest; ID NAME PASSWD SALARY ----- -------------------- -------------------- ...
- deeplenrnig学习笔记——什么是特征
特征是机器学习系统的原材料,对最终模型的影响是毋庸置疑的.如果数据被很好的表达成了特征,通常线性模型就能达到满意的精度. 一.特征的表示粒度: 学习算法在一个什么粒度上的特征表示,才有能发挥作用 ...
- Mediainfo的编译安装(suse)
Mediainfo 依赖libz和libzen以及libmediainfo,编译顺序为: libz, libzen, libmediainfo (1)编译libz(suse 11已经有了这个库,跳过此 ...