将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的更多相关文章

  1. windows下本地调试hadoop代码,远程调试hadoop节点。

    1.在github上搜索下载winutils.exe相关的一套文件,下载对应hadoop的版本. 2.将所有文件复制到hadoop的bin目录下 3.将hadoop.dll复制到windows\sys ...

  2. 四.idea本地调试hadoop程序

    目录: 目录见文章1 1.先上案例代码 WordCount.java: import java.io.IOException; import java.util.StringTokenizer; im ...

  3. 用python + hadoop streaming 编写分布式程序(一) -- 原理介绍,样例程序与本地调试

    相关随笔: Hadoop-1.0.4集群搭建笔记 用python + hadoop streaming 编写分布式程序(二) -- 在集群上运行与监控 用python + hadoop streami ...

  4. hadoop本地调试方法

    Mapreduce 是Hadoop上一个进行分布式数据运算和统计的框架,但是每次运行程序的时候都需要将程序打包并上传的集群环境中运行,这就会让程序的调试变得十分不方便.所以在这里写下这篇博客和大家交流 ...

  5. 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 ...

  6. eclipse/intellij idea 远程调试hadoop 2.6.0

    很多hadoop初学者估计都我一样,由于没有足够的机器资源,只能在虚拟机里弄一个linux安装hadoop的伪分布,然后在host机上win7里使用eclipse或Intellj idea来写代码测试 ...

  7. mapreduce 本地调试需要注意的问题

    1.写好的程序直接在hadoop集群里面执行 2.如果需要在本地调试,需要注释掉mapred-site.xml <configuration> <!-- <property&g ...

  8. Linux GDB调试全面解析

    GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,GDB主要可帮助工程师完成下面4个方面的功能: 启动程序,可以按照工程师自定义的要求随心所欲的运行程序. 让被调试的程序在工程师指定的断 ...

  9. linux内核调试指南

    linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 ...

随机推荐

  1. 策略(strategy)模式

    Head First一书中对于策略(strategy)模式的正式定义是:策略模式定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户. 为了介绍这个算法,书中讲了 ...

  2. 手动编译安装Libvirt之后利用systemctl管理libvirtd服务

    因为要给特殊的虚拟机关联文件指定selinux标签,而默认的Libvirt没有这个功能,所以需要修改LIbvirt源代码,重新编译安装Libvirt,而手动编译安装的LIbvirt,没有办法使用sys ...

  3. git学习------> Gitlab如何进行备份恢复与迁移?

    前段时间,在某台CenterOS服务器上搭建了Gitlab环境,并且大家陆陆续续的都把代码从svn迁移到了gitlab,但是之前的CenterOS服务器并不是搭建在公司的机房环境,而是搭建在办公室的某 ...

  4. mysql数据池设置

    参考链接https://www.cnblogs.com/KKSoft/p/8040374.html python的数据库连接池包:DBUtils DBUtils提供两种外部接口: Persistent ...

  5. 012-基于 git hooks 的前端代码质量控制解决方案

    原文看这里:https://github.com/kuitos/kui...全部文章看这里 https://github.com/kuitos/kui... 国际惯例先说下故事背景 通常情况下,如果我 ...

  6. php微信支付接口开发程序(流程已通)

    php微信支付接口开发程序(流程已通) 来源:未知    时间:2014-12-11 17:11   阅读数:11843   作者:xxadmin [导读] 微信支付接口现在也慢慢的像支付宝一个可以利 ...

  7. C++ 对象的sizeof问题

    需要补充.. 1. 注意虚函数的指针占4个字节.(当然是32位机器) #include <cstdlib> #include <ctime> #include <iost ...

  8. PKU 1204 Word Puzzles(AC自动机)

    题目大意:原题链接 给定一个字符串矩阵和待查找的单词,可以朝8个不同的方向查找,输出待查找单词第一个字母在矩阵中出现的位置和该单词被查到的方向. A~H代表8个不同的方向,A代表正北方向,其他依次以4 ...

  9. 京东AI平台 春招实习生面试--NLP(offer)

    给offer了 开心.春招第一个offer!!! 2018.4.11 update 1面: 只有1面, 面试官还是个老乡.. 1.自我介绍 如何学的AI相关的知识? 2.介绍百度的实习 3.拿到一个问 ...

  10. 微服务—ELK分布式日志框架

    在微服务架构下,微服务被拆分成多个微小的服务,每个微小的服务都部署在不同的服务器实例上,当我们定位问题,检索日志的时候需要依次登录每台服务器进行检索. 这样是不是感觉很繁琐和效率低下.所以我们还需要一 ...