阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Win7中使用Eclipse连接虚拟机中的Ubuntu中的Hadoop2.4

406次阅读
没有评论

共计 7523 个字符,预计需要花费 19 分钟才能阅读完成。

一早进入虚拟机启动 Hadoop,发生异常,重新格式化一下恢复正常,原因待查(格式化:在 hadoop 目录下执行 bin/hdfs namenode -format)

java.net.ConnectException:Call From chenph-Ubuntu/127.0.1.1 to localhost:9000 failed on connection

试试昨天制作的成果——eclipse 插件,按照网上的例子进行配置,失败,现象就是无法连接到虚拟机中的 Hadoop,于是试验了如下情况

查看虚拟机中的 ip,输入 ifconfig,得到 192.168.203.136,可以 ping 通 win7 的 ip192.168.101.120

在 win7 中无法 ping 到 192.168.203.136,原因是我将虚拟机创建的一个网络适配器禁用了,启用后通过在 win7 运行 ipconfig -all 可以看到一个 192.168.203.1 的 ip,这个就是 win7 和 ubuntu 俩系统的网段的 ip,这样就可以互相 ping 通了

可是 eclipse 中还是无法远程连接到 hadoop,继续想办法,修改 win7 中的 hosts 文件,发现我的 hosts 文件在系统中没有,后来找到了(没有隐藏,而是设置成了系统保护,去掉保护就行了),增加一条对应的信息 192.168.203.136 localhost

在 eclipse 中还是不行,这时候去 ubuntu 再次执行 ipconfig,ip 竟然变成了 192.168.203.137,我眼花了???

把配置的 ip 统一改成 192.168.203.137,再次试验,依然不行

这时候我把矛头指向了 hadoop 的配置,将所有配置 localhost 的地方统一改成了机器名,重新启动服务后,依然不行

因为 ip 自己会变的问题(可能是 dhcp 自动分配的问题吧,回头设置成固定的试试),所以上一步我用的机器名,这次我统一改成了 ip

————————————– 分割线 ————————————–

相关阅读

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

Hadoop LZO 安装教程 http://www.linuxidc.com/Linux/2013-01/78397.htm

Hadoop 集群上使用 Lzo 压缩 http://www.linuxidc.com/Linux/2012-05/60554.htm

————————————– 分割线 ————————————–

成了,一上午没白忙活

Win7 中使用 Eclipse 连接虚拟机中的 Ubuntu 中的 Hadoop2.4

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-05/101546p2.htm

昨天下午继续 eclipse 与 Hadoop 间的开发测试,很不顺利,虚拟机中的 ip 果然又变了,设置成手动的后虚拟机中的就上不了网了,检查了各种参数也没有办法,上不了就上不了吧,能别老变 ip 就行了

在 win7 环境下,使用我 eclipse4.3.2 加上我前天制作的 hadoop2.4 的插件进行测试,报异常

Exception in thread “main” java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

网上有相关的介绍,需要下载 hadoop.dll,winutils.exe(下载地址)把这两个文件放到 win 下你 hadoop 目录下的 bin 文件夹中(网上有介绍说直接替换现有 bin,我的还是会出现这个问题,可能是版本问题吧,毕竟我用的是 2.4,上边这两个文件是属于 2.2 版本的)

放好后,重新运行程序(我使用的 Run Application),还是报上边的错,找到源码,把源码放到我的项目里进行 debug,找到第 571 行,改为直接 return true;

再次重新运行程序,成功,上张图

Win7 中使用 Eclipse 连接虚拟机中的 Ubuntu 中的 Hadoop2.4

装好插件后显示的你配置的 hdfs 的目录,比在 Ubuntu 中方便一点,可以新增、删除、查看文件

上边提的那个错误,我直接修改的这个类

这个要注意,如果你不放 log4j 的配置文件,你会错过很多有用的报错信息,我刚开始就是没放这个文件,浪费了至少 5,6 个小时走弯路

将输入和输出文件路径在文件中定义好,这里需要说的是如果你的输出文件夹已经存在,再次运行的时候会报错的

运行信息,成功后可以在输出文件夹中的相应文件查看结果

调试过程中,几度崩溃,就是因为没有在工程里添加 log4j,最后看到曙光是因为在 ubuntu 中的 eclipse 调试成功了(这个 eclipse 插件我用的是网上下载的 2.2 的插件)

win7 下,我没有装 cygwin,用的是我自己编译的 2.4 的 eclipse 插件,从网上下了那个 dll 和 exe 直接放到 hadoop 的 bin 目录下,eclipse 中的 hadoop 也是配置的 hadoop 根目录,╮(╯▽╰)╭,网上的资料顶多算参考

一早进入虚拟机启动 Hadoop,发生异常,重新格式化一下恢复正常,原因待查(格式化:在 hadoop 目录下执行 bin/hdfs namenode -format)

java.net.ConnectException:Call From chenph-Ubuntu/127.0.1.1 to localhost:9000 failed on connection

试试昨天制作的成果——eclipse 插件,按照网上的例子进行配置,失败,现象就是无法连接到虚拟机中的 Hadoop,于是试验了如下情况

查看虚拟机中的 ip,输入 ifconfig,得到 192.168.203.136,可以 ping 通 win7 的 ip192.168.101.120

在 win7 中无法 ping 到 192.168.203.136,原因是我将虚拟机创建的一个网络适配器禁用了,启用后通过在 win7 运行 ipconfig -all 可以看到一个 192.168.203.1 的 ip,这个就是 win7 和 ubuntu 俩系统的网段的 ip,这样就可以互相 ping 通了

可是 eclipse 中还是无法远程连接到 hadoop,继续想办法,修改 win7 中的 hosts 文件,发现我的 hosts 文件在系统中没有,后来找到了(没有隐藏,而是设置成了系统保护,去掉保护就行了),增加一条对应的信息 192.168.203.136 localhost

在 eclipse 中还是不行,这时候去 ubuntu 再次执行 ipconfig,ip 竟然变成了 192.168.203.137,我眼花了???

把配置的 ip 统一改成 192.168.203.137,再次试验,依然不行

这时候我把矛头指向了 hadoop 的配置,将所有配置 localhost 的地方统一改成了机器名,重新启动服务后,依然不行

因为 ip 自己会变的问题(可能是 dhcp 自动分配的问题吧,回头设置成固定的试试),所以上一步我用的机器名,这次我统一改成了 ip

————————————– 分割线 ————————————–

相关阅读

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

Hadoop LZO 安装教程 http://www.linuxidc.com/Linux/2013-01/78397.htm

Hadoop 集群上使用 Lzo 压缩 http://www.linuxidc.com/Linux/2012-05/60554.htm

————————————– 分割线 ————————————–

成了,一上午没白忙活

Win7 中使用 Eclipse 连接虚拟机中的 Ubuntu 中的 Hadoop2.4

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-05/101546p2.htm

经过前面的学习,基本上可以小试牛刀编写一些小程序玩一玩了,在此之前做几项准备工作

明确我要用 Hadoop 干什么

大体学习一下 mapreduce

Ubuntu 重启后,再启动 hadoop 会报连接异常的问题

答:

数据提炼、探索数据、挖掘数据

map= 切碎,reduce= 合并

重启后会清空 tmp 文件夹,默认 namenode 会存在这里,需要在 core-site.xml 文件中增加(别忘了创建文件夹,没权限的话,需要用 root 创建并把权限改成 777):

<property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/hadoop/tmp</value>
</property>

大数据,我的第一反应是现有关系型数据库中的数据怎么跟 hadoop 结合使用,网上搜了一些资料,使用的是 DBInputFormat,那就简单编写一个从数据库读取数据,然后经过处理后,生成文件的小例子吧

数据库弄的简单一点吧,id 是数值整型、test 是字符串型,需求很简单,统计 TEST 字段出现的数量

Win7 中使用 Eclipse 连接虚拟机中的 Ubuntu 中的 Hadoop2.4

数据读取类:

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.mapreduce.lib.db.DBWritable;

public class DBRecoder implements Writable, DBWritable{
 String test;
 int id;
 @Override
 public void write(DataOutput out) throws IOException {
  out.writeUTF(test);
  out.writeInt(id);
 }
 @Override
 public void readFields(DataInput in) throws IOException {
  test = in.readUTF();
  id = in.readInt();
 }
 @Override
 public void readFields(ResultSet arg0) throws SQLException {
  test = arg0.getString(“test”);
  id = arg0.getInt(“id”);
 }
 @Override
 public void write(PreparedStatement arg0) throws SQLException {
  arg0.setString(1, test);
  arg0.setInt(2, id);
 }
}

mapreduce 操作类

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.db.DBConfiguration;
import org.apache.hadoop.mapreduce.lib.db.DBInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;

public class DataCountTest {
 public static class TokenizerMapper extends Mapper<LongWritable, DBRecoder, Text, IntWritable> {
  public void map(LongWritable key, DBRecoder value, Context context) throws IOException, InterruptedException {
   context.write(new Text(value.test), new IntWritable(1));
  }
 }

 public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
  private IntWritable result = new IntWritable();

  public void reduce(Text key, Iterable<IntWritable> values,
    Context context) throws IOException, InterruptedException {
   int sum = 0;
   for (IntWritable val : values) {
    sum += val.get();
   }
   result.set(sum);
   context.write(key, result);
  }
 }

 public static void main(String[] args) throws Exception {
  args = new String[1];
  args[0] = “hdfs://192.168.203.137:9000/user/chenph/output1111221”;

  Configuration conf = new Configuration();
 
        DBConfiguration.configureDB(conf, “Oracle.jdbc.driver.OracleDriver”, 
                “jdbc:oracle:thin:@192.168.101.179:1521:orcl”, “chenph”, “chenph”); 
 
  String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();

  Job job = new Job(conf, “DB count”);
 
  job.setJarByClass(DataCountTest.class);
  job.setMapperClass(TokenizerMapper.class);
  job.setReducerClass(IntSumReducer.class);
  job.setOutputKeyClass(Text.class);
  job.setOutputValueClass(IntWritable.class);
  job.setMapOutputKeyClass(Text.class); 
  job.setMapOutputValueClass(IntWritable.class); 
        String[] fields1 = { “id”, “test”}; 
        DBInputFormat.setInput(job, DBRecoder.class, “t1”, null, “id”,  fields1); 

  FileOutputFormat.setOutputPath(job, new Path(otherArgs[0]));
 
  System.exit(job.waitForCompletion(true) ? 0 : 1);
 }
}

开发过程中遇到的问题:

  1. Job 被标记为已作废,那应该用什么我还没有查到
  2. 乱码问题,hadoop 默认是 utf8 格式的,如果读取的是 gbk 的需要进行处理
  3. 这类例子网上挺少的,有也是老版的,新版的资料没有,我完全是拼凑出来的,很多地方还不甚了解,需要进一步学习官方资料
  4. 搜索资料时,有资料说不建议采用这种方式处理实际的大数据问题,原因就是并发过高,会瞬间秒杀掉数据库,一般都会采用导成文本文件的形式

更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计7523字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7928842
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新 SSL 证书系统、申请 godaddy 的 APIKEY 公司之前花钱购买的 ssl 证书快...
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...