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

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

435次阅读
没有评论

共计 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
文章数
19356
评论数
4
阅读量
8435163
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

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

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

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

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...
星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛 NAS-2:飞牛配置 RAID 磁盘阵列 前言 大家好,我是星哥之前星哥写了《星哥带你玩飞牛 ...
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
免费获得大模型的Api-Key的方法:英伟达提供GLM-4.7、Minimax M2.1模型和GitHub的AI大模型API申请

免费获得大模型的Api-Key的方法:英伟达提供GLM-4.7、Minimax M2.1模型和GitHub的AI大模型API申请

  免费获得大模型的 Api-Key 的方法:英伟达提供 GLM-4.7、Minimax M2.1 ...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...

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

一言一句话
-「
手气不错
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

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

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...