hadoop 分发本地的jar文件的过程讲解

一般情况下,我们会使用bai下面的du命令来运行一个hadoop任务: 这个命令实际上是zhi转化成下面的命令来运行的 dao在RunJar中,会读取abc.jar文件,然后尝试从manifest中提取Main-Class作为mainClass,如果manifest中没有指定,则把abc.jar之后的下一个参数当成mainClass。 接下来,RunJar会在本地创建一个临时目录(下面称为workDir,类似/tmp/hadoop-unjar...),然后把abc.jar解压到这个目录中。然后,把wrokDir、workDir/classes和workDir/lib下的所有文件路径 添加到一个变量中,然后使用URLClassLoader将这个变量指定的所有路径加载到当前线程。 最后,使用反射调用mainClass的main函数,进入用户自己的代码。 当我们的代码调用job.waitForCompletion时,会调用JobClient.copyAndConfigureFiles,把本地的jar文件拷贝到HDFS上面/tmp/hadoop/mapred/staging/

你可能感兴趣的:(CDH,hadoop)