如何在windows上使用eclipse远程连接hadoop进行程序开发

如何在windows上使用eclipse远程连接hadoop进行程序开发,第1张

由于Hadoop主要是部署和应用在Linux环境中的,但是目前鄙人自知能力有限,还无法完全把工作环境转移到linux中去(当然还有点小私心啦,windows下那么多好用的程序到linux下用不了还真有或世旁点心疼——比如说快播,O(∩_∩)O~),于是便想着用eclipse来远程连接hadoop进行开发,摸索了一番,下面是其步骤:

1. 首先把hadoop-eclipse-plugin-1.0.4.jar(具体版本视你的hadoop版本而定)放到eclipse安装目录的plugins文件夹中,如果重新打开eclipse后看到有如下视图,则说明你的hadoop插件已经安装成功了:

其中的“hadoop installation directory”配置项用于指向你的hadoop安装目录,在衫橡windows下你只需要把下载到的hadoop-1.0.4.tar.gz包解压到某个位置,然后指向这个位置即可。

2. 配置eclipse中的Map/Reduce Locations,如下图所示:

其中主机“master”是我在“C:\Windows\System32\drivers\etc\hosts”中自定义的主机名:

218.195.250.80 master

这时如果在eclipse中能看到如下“DFS Locations”,就说明eclipse已经成功连上远程的hadoop了(注意,别忘了把你的视图切换到Map/Reduce视图,而不是默认的Java视图):

3. 现在我们来测试《hadoop权威指导》中的MaxTemperature例子程序,建立如下三个类:

Run Configuration中的配置参数为:

hdfs://202.193.75.78:49000/user/hadoop/input/core-site.xml //输入文件,此处有换行

hdfs://202.193.75.78:49000/user/hadoop/output5 //输出目录

这时如果我们运行MaxTemperature类,返乱会报如下错:

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

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

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

重新编译打包hadoop-core-1.0.4.jar,替换掉hadoop-1.0.4根目录下的hadoop-core-1.0.4.jar即可。(我重新打包的时候出了点问题,就直接以从网上下载的hadoop-core-1.0.2.jar代替hadoop-core-1.0.4.jar了,这样也可以正常运行,下载地址:https://skydrive.live.com/?cid=cf7746837803bc50&id=CF7746837803BC50%211276)

(其实还有另一种简单的办法,我们只需要把hadoop-1.0.4/src/core/org/apache/hadoop/fs/FileUtil.java修改之后重新编译过的class文件加入到原来的hadoop-core-1.0.4.jar包中代替原来的FileUtil.class文件即可,这里有一个已经做好的适合于windows环境的hadoop-core-1.0.4.jar包了,你可以直接下载)

另外,我还遇到了这么一个错误:

org.apache.hadoop.security.AccessControlException:Permission denied:user=Administrator,access=WRITE,inode="tmp":root:supergroup:rwxr-xr-x 。

这个错误有些蹊跷,因为我已经在map/reduce locations中配置了用户名是hadoop(hadoop就是我linux上运行hadoop集群的用户名),不知道它为什么还是以Administrator用户身份来方位hadoop的,解决办法如下:

问题原因:本地用户administrator(本机windows用户)想要远程 *** 作hadoop系统,没有权限引起的。

解决办法:

a、如果是测试环境,可以取消hadoop hdfs的用户权限检查。打开conf/hdfs-site.xml,找到dfs.permissions属性修改为false(默认为true)OK了。

b、修改hadoop location参数,在advanced parameter选项卡中,找到hadoop.job.ugi项,将此项改为启动hadoop的用户名即可。(注意第一次设置的时候可能没有hadoop.job.ugi参数,报错后在去看就有了。)

c、因为Eclipse使用hadoop插件提交作业时,会默认以 DrWho 身份去将作业写入hdfs文件系统中,对应的也就是 HDFS 上的/user/hadoop , 由于 DrWho 用户对hadoop目录并没有写入权限,所以导致异常的发生。解决方法为:放开 hadoop 目录的权限 , 命令如下 :$ hadoop fs -chmod 777

(1)准备工作

1)

安装JDK

6或者JDK

7

2)

安装scala

2.10.x

(注意版本)

2)下载Intellij

IDEA最新版(本文以IntelliJ

IDEA

Community

Edition

13.1.1为例说明,不同版本,界面布局可能不同)

3)将下载的Intellij

IDEA解压后,安装scala插件,流程如下:

依次选择“Configure”–>

“Plugins”–>

“Browse

repositories”,输入scala,然后安装即可

(2)搭建Spark源码阅读环境(需要联网)

一种方法是直接依次选择“import

project”–>

选择spark所在目录

–>

“SBT”,之后intellij会自动识别SBT文件,并下载依赖的外部jar包,整个流程用时非常长,取决于机器的网络环境(不建议在windows

下 *** 作,可能遇到各种问题),一般需花费几十分钟到几个小时。注意,下载过程会用到git,因此应该事先安装了git。

第二种方法是首先在linux *** 作系蚂晌皮统上生成intellij项目文件,然后在intellij

IDEA中直接通过“Open

Project”打开项目即可。在闷差linux上生成intellij项目文件的方法(需要安装git,不需要安装scala,sbt会自动下载)是:在

spark源代码根目录下,输入sbt/sbt

gen-idea

注:如果你在windows下阅读源代码,建议先在linux下生成项目文件,然后导入到windows中的intellij

IDEA中。

(3)搭建Spark开发环境

在intellij

IDEA中创谨岁建scala

project,并依次选择“File”–>

“project

structure”

–>

“Libraries”,选择“+”,将spark-hadoop

对应的包导入,比如导入spark-assembly_2.10-0.9.0-incubating-hadoop2.2.0.jar(只需导入该jar

包,其他不需要),如果IDE没有识别scala

库,则需要以同样方式将scala库导入。之后开发scala程序即可:

编写完scala程序后,可以直接在intellij中,以local模式运行,方法如下:

点击“Run”–>

“Run

Configurations”,在d出的框中对应栏中填写“local”,表示将该参数传递给main函数,如下图所示,之后点击“Run”–>

“Run”运行程序即可。

如果想把程序打成jar包,通过命令行的形式运行在spark

集群中,可以按照以下步骤 *** 作:

依次选择“File”–>

“Project

Structure”

–>

“Artifact”,选择“+”–>

“Jar”

–>

“From

Modules

with

dependencies”,选择main函数,并在d出框中选择输出jar位置,并选择“OK”。

最后依次选择“Build”–>

“Build

Artifact”编译生成jar包。

开发数据大平台的 *** 作方法具体如下。

1、 *** 作体系的挑选。 *** 作体系一般使用开源版的RedHat、Centos或许Debian作为底层的构建渠道,要根据大数据渠道所要建立的数据剖析东西能够支撑的体系,正确的挑选 *** 作体系的版本。

2、建立Hadoop集群。Hadoop作为一个开发和运行处理大规模数据的软件渠道,实现了在大量的廉价计算机组成的集群中对海量数据进行分布式计算。Hadoop结构中最核心的规划是HDFS和MapReduce,HDFS是一个高度容错性的体系,合适布置在廉价的机简橡配器上,能够供给高吞吐量的数据访问,适用于那些有着超大数据集的应用程序;MapReduce是一套能够从海量的数据中提取数据最终回来成果集的编程模型。在生产实践应用中,Hadoop非常合适应用于大数据存储和大数据的剖析应用,合适服务于几千台到几万台大的服务器的集群运行,支撑PB级别的存储容量。

3、挑选数据接入和预处理东西。面临各种来源的数据,数据接入便是将这些零散的数据整合在一起,归纳起来进行剖析。数据接入首要包括文件日志的接入、数据库日志的接入、关系型数据库的接入和应用程序等的接入,数据接入常拦指用的东西有Flume,Logstash,NDC(网易数据运河体系),sqoop等。

4、数据存储。除了Hadoop中已广泛应用于数据存储的HDFS,常用的还有分布式、面向列的开源数据库Hbase,HBase是一种key、value体系,布置在HDFS上,与Hadoop一样,HBase的目标首要是依靠横向扩展,通过不断的添加廉价的商用服务器,添如耐加计算和存储才能。同时hadoop的资源管理器Yarn,能够为上层应用供给统一的资源管理和调度,为集群在利用率、资源统一等方面带来巨大的优点。

5、挑选数据挖掘东西。Hive能够将结构化的数据映射为一张数据库表,并供给HQL的查询功能,它是建立在Hadoop之上的数据仓库根底架构,是为了削减MapReduce编写工作的批处理体系,它的出现能够让那些通晓SQL技术、可是不熟悉MapReduce、编程才能较弱和不擅长Java的用户能够在HDFS大规模数据集上很好的利用SQL言语查询、汇总、剖析数据。

6、数据的可视化以及输出API。关于处理得到的数据能够对接主流的BI体系,比如国外的Tableau、Qlikview、PowrerBI等,国内的SmallBI和新兴的网易有数(可免费试用)等,将成果进行可视化,用于决策剖析;或许回流到线上,支撑线上业务的开展。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8245659.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存