Hadoop学习笔记之在Eclipse中远程调试Hadoop

2023-11-06

  1. 转载地址:http://itindex.net/detail/37273-hadoop-%E5%AD%A6%E4%B9%A0-%E7%AC%94%E8%AE%B0
  2. 插件

话说Hadoop 1.0.2/src/contrib/eclipse-plugin只有插件的源代码,这里给出一个我打包好的对应的Eclipse插件: 
下载地址

下载后扔到eclipse/dropins目录下即可,当然eclipse/plugins也是可以的,前者更为轻便,推荐;重启Eclipse,即可在透视图(Perspective)中看到Map/Reduce。

配置

点击蓝色的小象图标,新建一个Hadoop连接:

2

注意,一定要填写正确,修改了某些端口,以及默认运行的用户名等

具体的设置,可见

正常情况下,可以在项目区域可以看到

image

这样可以正常的进行HDFS分布式文件系统的管理:上传,删除等操作。

为下面测试做准备,需要先建了一个目录 user/root/input2,然后上传两个txt文件到此目录:

intput1.txt 对应内容:Hello Hadoop Goodbye Hadoop

intput2.txt 对应内容:Hello World Bye World

HDFS的准备工作好了,下面可以开始测试了。

Hadoop工程

新建一个Map/Reduce Project工程,设定好本地的hadoop目录

1

新建一个测试类WordCountTest:

右键,选择“Run Configurations”,弹出窗口,点击“Arguments”选项卡,在“Program argumetns”处预先输入参数:

hdfs://master:9000/user/root/input2 dfs://master:9000/user/root/output2

备注:参数为了在本地调试使用,而非真实环境。

然后,点击“Apply”,然后“Close”。现在可以右键,选择“Run on Hadoop”,运行。

但此时会出现类似异常信息:

12/04/24 15:32:44 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 
12/04/24 15:32:44 ERROR security.UserGroupInformation: PriviledgedActionException as:Administrator cause:java.io.IOException: Failed to set permissions of path: \tmp\hadoop-Administrator\mapred\staging\Administrator-519341271\.staging to 0700 
Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp\hadoop-Administrator\mapred\staging\Administrator-519341271\.staging to 0700 
    at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:682) 
    at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:655) 
    at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:509) 
    at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:344)
    at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:189) 
    at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:116) 
    at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:856) 
    at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:850) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:396) 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1093) 
    at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:850) 
    at org.apache.hadoop.mapreduce.Job.submit(Job.java:500) 
    at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:530) 
    at com.hadoop.learn.test.WordCountTest.main(WordCountTest.java:85)

这个是Windows下文件权限问题,在Linux下可以正常运行,不存在这样的问题。

解决方法是,修改/hadoop-1.0.2/src/core/org/apache/hadoop/fs/FileUtil.java里面的checkReturnValue,注释掉即可(有些粗暴,在Window下,可以不用检查):

重新编译打包hadoop-core-1.0.2.jar,替换掉hadoop-1.0.2根目录下的hadoop-core-1.0.2.jar即可。

这里提供一份修改版的 hadoop-core-1.0.2-modified.jar文件,替换原hadoop-core-1.0.2.jar即可。

替换之后,刷新项目,设置好正确的jar包依赖,现在再运行WordCountTest,即可。

成功之后,在Eclipse下刷新HDFS目录,可以看到生成了ouput2目录:

image

点击“ part-r-00000”文件,可以看到排序结果:

Bye    1 
Goodbye    1 
Hadoop    2 
Hello    2 
World    2

嗯,一样可以正常Debug调试该程序,设置断点(右键 –> Debug As – > Java Application),即可(每次运行之前,都需要收到删除输出目录)。

另外,该插件会在eclipse对应的workspace\.metadata\.plugins\org.apache.hadoop.eclipse下,自动生成jar文件,以及其他文件,包括Haoop的一些具体配置等。

嗯,更多细节,慢慢体验吧。

遇到的异常

org.apache.hadoop.ipc.RemoteException: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/root/output2/_temporary. Name node is in safe mode. 
The ratio of reported blocks 0.5000 has not reached the threshold 0.9990. Safe mode will be turned off automatically. 
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirsInternal(FSNamesystem.java:2055) 
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirs(FSNamesystem.java:2029) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.mkdirs(NameNode.java:817) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:563) 
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1388) 
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1384) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:396) 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1093) 
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1382)

在主节点处,关闭掉安全模式:

#bin/hadoop dfsadmin –safemode leave

如何打包

将创建的Map/Reduce项目打包成jar包,很简单的事情,无需多言。保证jar文件的META-INF/MANIFEST.MF文件中存在Main-Class映射:

Main-Class: com.hadoop.learn.test.TestDriver

若使用到第三方jar包,那么在MANIFEST.MF中增加Class-Path好了。

另外可使用插件提供的MapReduce Driver向导,可以帮忙我们在Hadoop中运行,直接指定别名,尤其是包含多个Map/Reduce作业时,很有用。

一个MapReduce Driver只要包含一个main函数,指定别名:

这里有一个小技巧,MapReduce Driver类上面,右键运行,Run on Hadoop,会在Eclipse的workspace\.metadata\.plugins\org.apache.hadoop.eclipse目录下自动生成jar包,上传到HDFS,或者远程hadoop根目录下,运行它:

# bin/hadoop jar LearnHadoop_TestDriver.java-460881982912511899.jar testcount input2 output3

OK,本文结束。

 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hadoop学习笔记之在Eclipse中远程调试Hadoop 的相关文章

随机推荐

  • 什么是SPD-Conv

    SPD Conv是一种深度学习模型的卷积层 SPD Conv卷积层的输入是一个浮点数组 表示一个对称正定矩阵 而不是像传统卷积层那样的多维图像数据 SPD Conv卷积层使用输入矩阵上的操作来执行卷积运算 而不是像传统卷积层那样使用权值矩阵
  • Ajax 和 PHP 实现验证码的实时验证

    我的个人博客 逐步前行STEP PHP的图像处理功能强大 做一张验证码图片也是非常简单的 但是 在实现实时验证时 确遇到了一个难题 我用nat123对我的电脑上的网站进行端口映射 实现了在外网访问 本来是采用cookie的方式用js对验证码
  • Vue使用原生JS实现锚点跳转滚动效果

    本文使用iView 左侧导航元素 div class project left div class project card 测试 div div 右侧滚动元素 div class result card div
  • linux下如何查看一个服务的安装路径

    ps u 系统用户名 进入linux的进程目录 proc 执行ls l 可以看到对应的进程目录 结果如下图所示 进入30058这个进程目录 执行 ls l 结果如下
  • 一个简单的Python网络爬虫教程

    网络爬虫是一种自动获取网页内容的程序 它可以从互联网上的网站中提取数据并进行分析 本教程将带您逐步了解如何使用 Python 构建一个简单的网络爬虫 注意 在进行网络爬虫时 请遵守网站的使用条款和法律法规 避免对目标网站造成不必要的负担 步
  • 关于实例分割的最新研究和进展,看这篇就够了!

    在计算机视觉领域 实例分割是一个很重要的研究主题 在地理信息系统 医学影像 自动驾驶 机器人等领域有着很重要的应用技术支持作用 具有十分重要的研究意义 本文综述基于实例分割的最新进展和发展历程 首先介绍了实例分割的基本逻辑 总结了目前主要研
  • MATLAB——生成周期矩形信号

    题目 周期矩形信号 一连续周期矩形信号频率为10Hz 信号幅度在 1 1之间 脉冲宽度与周期的比例是1 2 用128点采样 显示三个周期的信号波形 代码解释 f1 10 将频率赋值为 10 Hz 即信号的周期为 1 10 秒 Um 1 将幅
  • Qt使用多线程的一些心得——1.继承QThread的多线程使用方法

    文章目录 1 摘要 2 Qt多线程方法1 继承 QThread 2 1写一个继承于 QThread 的线程 2 2 QThread的几个函数quit exit terminate函数 2 3 正确的终止一个线程 2 4 如何正确启动一个线程
  • liu.四则运算库,模拟第三方库的编写,测试

    1 四则运算库 def add a b return float a b def subtracr a b return float a b def multipy a b return float a b def divide a b r
  • 2023高教社杯数学建模C题思路分析 - 蔬菜类商品的自动定价与补货决策

    1 赛题 在生鲜商超中 一般蔬菜类商品的保鲜期都比较短 且品相随销售时间的增加而变差 大部分品种如当日未售出 隔日就无法再售 因此 商超通常会根据各商品的历史销售和需 求情况每天进行补货 由于商超销售的蔬菜品种众多 产地不尽相同 而蔬菜的进
  • CSS技巧,CSS设置任何元素宽度随内容增加自动变宽

    宽度随内容增加自动变宽的问题 看起来简单 但网上各种找不到 其实感觉以前在布局的时候在哪里遇到过自动变宽 想了好久好像记得只有用table布局的时候吧 但是不可能哪里都用table 如果用层那怎么办呢 然后又发现了一个熟悉 display
  • 解决requests.exceptions.SSLError: HTTPSConnectionPool(host=xxxxx‘, port=443): Max retries exceeded

    问题描述 使用scrapy框架时报错SSL 于是另起一个文件 使用requests 报错requests exceptions SSLError HTTPSConnectionPool host xxx port 443 Max retri
  • Leetcode 121. 买卖股票的最佳时机

    买卖股票的最佳时机 给定一个数组 它的第 i 个元素是一支给定股票第 i 天的价格 如果你最多只允许完成一笔交易 即买入和卖出一支股票一次 设计一个算法来计算你所能获取的最大利润 注意 你不能在买入股票前卖出股票 示例 1 输入 7 1 5
  • 详解Unicode字符集以及字符编码实现(一)

    在日常生活中 我们经常会碰到打开一个文件 但是文件内容乱码的问题 比如我想看 西游记 这部小说 下载链接 https m ijjjxs com txt dl 35 12585 html 点击TXT电子书下载 很快就会下载完成 但是使用电脑自
  • npm ERR! chromedriver@2.46.0 install: `node install.js`

    vue项目npm install 时报错 如下 该问题是vue cli脚手架的一个bug 原因是chromedriver的部分文件被国内网络给墙掉了 无法下载完整的chromedirver包 解决办法 npm install chromed
  • 极限导数练习题

    f x sinx 2 x 当x趋近于0时 f x 的极限是0 f x sin x 2 x 当x趋近于0时 f x 的极限是0 f x sin 2x x 当x趋近于0时 f x 的极限是2
  • 利用python操纵数据库--数据写入与tkinter实现界面查询

    在日常练习sql的时候 又找不到好的线上数据库 这个时候不如自己下载一个mysql 但是数据批量写入呢 就可能是一个问题 这时候 利用python脚本批量写入即可 同时每次运行脚本也是一个麻烦的事 可以实现窗口输入 写到数据库中 这将在后面
  • centos7 开启网络连接

    1 当我们发现无法联网时 我们运行下面命令或者ping命令 ip addr 结果没有显示局域网的IP地址 2 我们去修改网卡配置文件 把网络连接打开 cd cd etc sysconfig network scripts vi ifcfg
  • 数据的清洗和检验(完全去重,缺失值的填充)

    一 完全去重 1 打开kettle工具 新建转换 gt 创建CSV文件输入控件 gt 1唯一行 哈希值 控件 gt 跳连接线 2 配置CSV文件输入控件 gt 进入CSV文件控制页面 如图所示 3 点击浏览 gt 选择完去重的文件merge
  • Hadoop学习笔记之在Eclipse中远程调试Hadoop

    转载地址 http itindex net detail 37273 hadoop E5 AD A6 E4 B9 A0 E7 AC 94 E8 AE B0 插件 话说Hadoop 1 0 2 src contrib eclipse plug