问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用idea能不能远程连接hadoop

发布网友 发布时间:2022-04-21 07:08

我来回答

1个回答

热心网友 时间:2022-06-18 15:09

一、准备工作
1.1 在win7中,找一个目录,解压hadoop-2.6.0,本文中是D:\yangjm\Code\study\hadoop\hadoop-2.6.0 (以下用$HADOOP_HOME表示)
1.2 在win7中添加几个环境变量
HADOOP_HOME=D:\yangjm\Code\study\hadoop\hadoop-2.6.0
HADOOP_BIN_PATH=%HADOOP_HOME%\bin
HADOOP_PREFIX=D:\yangjm\Code\study\hadoop\hadoop-2.6.0
另外,PATH变量在最后追加;%HADOOP_HOME%\bin
二、eclipse远程调试
1.1 下载hadoop-eclipse-plugin插件
hadoop-eclipse-plugin是一个专门用于eclipse的hadoop插件,可以直接在IDE环境中查看hdfs的目录和文件内容。其源代码托管于github上,官网地址是 https://github.com/winghc/hadoop2x-eclipse-plugin
有兴趣的可以自己下载源码编译,百度一下N多文章,但如果只是使用 https://github.com/winghc/hadoop2x-eclipse-plugin/tree/master/release%20 这里已经提供了各种编译好的版本,直接用就行,将下载后的hadoop-eclipse-plugin-2.6.0.jar复制到eclipse/plugins目录下,然后重启eclipse就完事了
1.2 下载windows64位平台的hadoop2.6插件包(hadoop.dll,winutils.exe)
在hadoop2.6.0源码的hadoop-common-project\hadoop-common\src\main\winutils下,有一个vs.net工程,编译这个工程可以得到这一堆文件,输出的文件中,
hadoop.dll、winutils.exe 这二个最有用,将winutils.exe复制到$HADOOP_HOME\bin目录,将hadoop.dll复制到%windir%\system32目录 (主要是防止插件报各种莫名错误,比如空对象引用啥的)
注:如果不想编译,可直接下载编译好的文件 hadoop2.6(x64)V0.2.zip
1.3 配置hadoop-eclipse-plugin插件
启动eclipse,windows->show view->other

window->preferences->hadoop map/rece 指定win7上的hadoop根目录(即:$HADOOP_HOME)

然后在Map/Rece Locations 面板中,点击小象图标

添加一个Location

这个界面灰常重要,解释一下几个参数:
Location name 这里就是起个名字,随便起
Map/Rece(V2) Master Host 这里就是虚拟机里hadoop master对应的IP地址,下面的端口对应 hdfs-site.xml里dfs.datanode.ipc.address属性所指定的端口
DFS Master Port: 这里的端口,对应core-site.xml里fs.defaultFS所指定的端口
最后的user name要跟虚拟机里运行hadoop的用户名一致,我是用hadoop身份安装运行hadoop 2.6.0的,所以这里填写hadoop,如果你是用root安装的,相应的改成root
这些参数指定好以后,点击Finish,eclipse就知道如何去连接hadoop了,一切顺利的话,在Project Explorer面板中,就能看到hdfs里的目录和文件了

可以在文件上右击,选择删除试下,通常第一次是不成功的,会提示一堆东西,大意是权限不足之类,原因是当前的win7登录用户不是虚拟机里hadoop的运行用户,解决办法有很多,比如你可以在win7上新建一个hadoop的管理员用户,然后切换成hadoop登录win7,再使用eclipse开发,但是这样太烦,最简单的办法:
hdfs-site.xml里添加
1 <property>
2 <name>dfs.permissions</name>
3 <value>false</value>
4 </property>

然后在虚拟机里,运行hadoop dfsadmin -safemode leave
保险起见,再来一个 hadoop fs -chmod 777 /
总而言之,就是彻底把hadoop的安全检测关掉(学习阶段不需要这些,正式生产上时,不要这么干),最后重启hadoop,再到eclipse里,重复刚才的删除文件操作试下,应该可以了。
1.4 创建WoldCount示例项目
新建一个项目,选择Map/Rece Project

后面的Next就行了,然后放一上WodCount.java,代码如下:
View Code
然后再放一个log4j.properties,内容如下:(为了方便运行起来后,查看各种输出)
View Code
最终的目录结构如下:

然后可以Run了,当然是不会成功的,因为没给WordCount输入参数,参考下图:
1.5 设置运行参数

因为WordCount是输入一个文件用于统计单词字,然后输出到另一个文件夹下,所以给二个参数,参考上图,在Program arguments里,输入
hdfs://172.28.20.xxx:9000/jimmy/input/README.txt
hdfs://172.28.20.xxx:9000/jimmy/output/
大家参考这个改一下(主要是把IP换成自己虚拟机里的IP),注意的是,如果input/READM.txt文件没有,请先手动上传,然后/output/ 必须是不存在的,否则程序运行到最后,发现目标目录存在,也会报错,这个弄完后,可以在适当的位置打个断点,终于可以调试了:

三、intellij idea 远程调试hadoop
3.1 创建一个maven的WordCount项目
pom文件如下:
View Code
项目结构如下:

项目上右击-》Open Mole Settings 或按F12,打开模块属性

添加依赖的Libary引用

然后把$HADOOP_HOME下的对应包全导进来

导入的libary可以起个名称,比如hadoop2.6

3.2 设置运行参数

注意二个地方:
1是Program aguments,这里跟eclipes类似的做法,指定输入文件和输出文件夹
2是Working Directory,即工作目录,指定为$HADOOP_HOME所在目录
然后就可以调试了

intellij下唯一不爽的,由于没有类似eclipse的hadoop插件,每次运行完wordcount,下次再要运行时,只能手动命令行删除output目录,再行调试。为了解决这个问题,可以将WordCount代码改进一下,在运行前先删除output目录,见下面的代码:
View Code
但是光这样还不够,在IDE环境中运行时,IDE需要知道去连哪一个hdfs实例(就好象在db开发中,需要在配置xml中指定DataSource一样的道理),将$HADOOP_HOME\etc\hadoop下的core-site.xml,复制到resouces目录下,类似下面这样:

里面的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://172.28.20.***:9000</value>
</property>
</configuration>

上面的IP换成虚拟机里的IP即可
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么退出夸克HD账号登录状态? 猫感冒了看兽医要多少钱 Pka 与 PH的区别及各自的应用领域 储干在公司是干什么的职位啊 2025数字博览会 岗位丨申万宏源证券研究所招聘实习生(可留用), 国海证券研究所+开源证 ... 用发酵粉蒸馒头如何蒸? 雷蛇现在的售后保修政策是怎样的有个鼠标双击了 安代驾好还是e代驾好 急需一篇科技小论文,六年级水平的`要快`谢谢啊`! notepad++怎么连接hadoop文件 eclipse怎样使用maven连接hadoop集群 linux怎么链接hadoop的集群 现有 java web程序,如何去连接hadoop? 如何在win7下的eclipse中调试Hadoop2.2.0的程序 为什么每次连接hadoop都要格式化才可以连接上 qq情侣黄钻解除了黄钻还在吗 &#139337;寮这两个字怎么读? qq黄钻是什么? QQ的情侣黄钻和黄钻功能一样吗? qq情侣黄钻一个是黄钻开了之后另一个是黄钻吗 双方都是黄钻,现在开通了情侣空间,自动点亮了情侣黄钻,那我还用续费情侣黄钻么? 两个人都开了黄钻弄情侣黄钻还用额外收钱吗 对方不是黄钻而我是黄钻对方访问了我的空间对方-可以删除访问记 是否的拼音 开通情侣黄钻是不是黄钻也一并开了 &#139337;寮这两个字怎么读? QQ有情侣黄钻之后自己还有必要开通普通黄钻吗? 先开通情侣黄钻再开通黄钻,双方会有黄钻吗? qq空间里面的情侣黄钻是干什么的? eclipse远程连接hadoop 不能连接 hadoop 为什么要与eclipse连接 如何搭建hadoop集群 桥接 怎么将eclipse和hadoop集群相连接 如何安装hadoop 你好,你是怎么在本地eclipse连接虚拟机上的hadoop的? 如何配置Hadoop环境 如何在CentOS下安装Hadoop并与Eclipse连接 怎么更改hive连接hadoop的地址 myeclipse 连接hadoop失败 java.io.eofexception 如何使用Hadoop进入大数据库时代 如何在hadoop下连接hive 电脑卸载软件后提示重启? 卸载软件时电脑自动重启,怎么回事? 卸载某些软件后计算机为什么要重启 某些软件卸载后为什么要重启电脑 为什么电脑把软件删除重启后还在后台运行? 为什么一些软件卸载后需要重启才能完全删除呢? 为什么一卸载软件就自动关机重启? 卸载软件时电脑自动重启..怎么回事啊..