mapreduce—从java客户机远程运行hadoop作业

t30tvxxf  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(381)

我让virtualbox vm以伪分布式模式运行hbase和hadoop。我修改了一些简单的mapreduce代码来计算给定hbase表中的行数(hbase mapreduce rowcounter代码)。当我将修改后的代码编译成jar文件,将其传输到vm,并通过hadoop命令行正常运行时,一切都很好。但是,我希望能够从windows机器上的java客户机运行它(从java代码,而不是通过ssh命令来执行hadoop命令行,即hadoopjar)。当我尝试从windows端(java客户机)运行它时,所有必要的连接都被连接到vm上的hadoop和hbase中,但是我收到一个“classnotfoundexception”,hadoop找不到我的mapper类。
我已经手动将jar文件复制到hdfs上,并试图通过设置配置选项(conf.set(“mapred.jar”,“hdfs:///rowcounttest.jar”);)将java客户机指向该位置。但是,它仍然找不到类(不知道它是否在寻找jar)。
首先,您知道当从远程客户机运行作业时,为了让hadoop识别jar存储的hdfs中的类文件,需要做些什么吗?
第二,您知道有没有任何方法可以在不预加载jar文件的情况下将必要的类文件与作业一起“传递”到集群?

mf98qq94

mf98qq941#

必须将jar文件复制到localfilesystem中的某个位置(而不是hdfs中),并在hadoop-env.sh文件中设置hadoop\u classpath变量以指向相同的位置。
更改hadoop-env.sh文件后,必须重新启动mapreduce服务。-作业跟踪器-任务跟踪器
注意:mapreduce作业将在hadoop\u classpath变量中指定的位置查找类(jar)。

相关问题