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内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 ...
随机推荐
- 前端开发 - jsBom
一.jsBom简介 jsBom = javascript browser object modelBOM指的是浏览器对象模型 Browser Object Model,它的核心就是浏览器. 二.Bom ...
- shipyard 中文版安装 -- Docker web管理
#本文使用markdown文档格式 #Docker web管理平台 #shipyard 中文版安装 #hipyard可对容器.镜像.仓库.docker节点进行管理的web系统 #+++++++++++ ...
- 19.Delete Documents-官方文档摘录
1 插入例子 db.inventory.insertMany( [ { item: "journal", qty: 25, size: { h: 14, w: 21, uom: & ...
- Mysql中字段类型之时间戳大坑2
本文的内容依旧是讨论mysql字段类型为时间戳timestamp的问题,在遇到了之前的那个问题之后,今天测试人员又给我提了一个bug,是在前端页面提交会议表单的时候,选择了一个会议时间(2059年 ...
- 分类,logistic回归
1. 使用回归进行分类 机器学习中分类是指输入一个样本点,输出这个样本点所属的类别,预测的是一个离散值,如类别(1,2). 而回归问题是输入一个样本点,预测一个值,这个值是连续值,可以介于\([1,2 ...
- (4.2)动态管理视图DMV
以下是一些您应该熟悉的更有用的DMV: 1.sys.dm_exec_cached_plans - 可用于SQL Server的缓存查询计划 2.sys.dm_exec_sessions - SQL S ...
- python爬虫 (一) 爬虫基础了解,urllib
• URL的含义: 统一资源定位符,结构: URL的格式由三部分组成: ①第一部分是协议(或称为服务方式). ②第二部分是存有该资源的主机IP地址(有时也包括端口号). ③第三部分是主机资源的具体地址 ...
- 005-hive概述,计算原理及模型
计算原理及模型 优化的根本思想: 尽早尽量过滤数据,减少每个阶段的数据量 减少job数 解决数据倾斜问题 Hive概述 名称 hive系统架构 metastore derbymysql ...
- 使用Spring注解获取配置文件信息
需要加载的配置文件内容(resource.properties): #FTP相关配置 #FTP的IP地址 FTP_ADDRESS=192.168.1.121 FTP_PORT=21 FTP_USERN ...
- 细说PHP7
PHP7带来的新东西 1.类型的声明. 可以使用字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool),来声明函数的参数类型与函数返回值. declare(s ...