hadoop 提交jar的运行 org.apache.hadoop.util.RunJar

本文详细解析了Hadoop3.x中org.apache.hadoop.util.RunJar类的使用方法,特别是临时目录的设定方式,对比老版本的不同,并提供了具体的代码实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于hadoop 提交jar的运行如下: 

1)https://www.cnblogs.com/admln/p/hadoop2-work-excute-submit.html

2) https://blog.youkuaiyun.com/pzqingchong/article/details/77131004

注意: hadoop 3.x中, org.apache.hadoop.util.RunJar 的临时目录是通过  java.io.tmpdir 传入的,如下图所示。

File tmpDir = new File(System.getProperty("java.io.tmpdir"));
    ensureDirectory(tmpDir);

    final File workDir;
    try {
      workDir = File.createTempFile("hadoop-unjar", "", tmpDir);
    } catch (IOException ioe) {
      // If user has insufficient perms to write to tmpDir, default
      // "Permission denied" message doesn't specify a filename.
      System.err.println("Error creating temp dir in java.io.tmpdir "
                         + tmpDir + " due to " + ioe.getMessage());
      System.exit(-1);
      return;
    }

原来的老版本却是Configuration().get("hadoop.tmp.dir")

### 配置和使用 HBase 的 `org.apache.hadoop.hbase.util.HBaseConfTool` 在 Windows 环境下的解决方案 在 Windows 系统上运行 HBase 并解决与 `org.apache.hadoop.hbase.util.HBaseConfTool` 相关的配置或使用问题,通常涉及以下几个方面: #### 1. **确认 HBase 和 Hadoop 版本兼容** 确保所使用的 HBase 和 Hadoop 版本相互兼容。例如,在某些情况下,HBase-0.98.x 及更早版本可能需要特定的 Hadoop 支持[^3]。因此,建议下载适合当前环境的稳定版二进制包。 对于 Windows 用户来说,推荐访问清华大学开源镜像站点获取最新稳定的 HBase 发行版[^4]: ```plaintext https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/stable/ ``` #### 2. **设置 Java 环境变量** 由于 HBase 是基于 Java 开发的应用程序,必须先安装 JDK 或 JRE,并将其路径加入系统的 PATH 环境变量中。验证方法如下: ```cmd java -version javac -version ``` 如果命令返回有效的版本号,则说明已成功配置 JAVA_HOME 和 PATH。 #### 3. **修改 HBase 配置文件** 进入解压后的 HBase 安装目录 `/conf` 文件夹下编辑 `hbase-env.sh` 脚本(需转换为 `.bat` 后缀以便于 Windows 使用)。具体操作包括但不限于以下几点: - 设置正确的 JVM 参数; - 明确指定 HADOOP_HOME 地址以避免潜在冲突; 以下是针对 Windows 修改的一个例子: ```batch set HBASE_CLASSPATH=%HBASE_HOME%\lib\* set JAVA_HOME=C:\Program Files\Java\jdk-xx set HADOOP_HOME=D:\path_to_hadoop ``` #### 4. **处理 Protobuf 版本冲突** 当遇到类似于 `java.lang.NoClassDefFoundError: org.apache.hadoop.hbase.util.ByteStringer` 错误时,这通常是由于 protobuf 库的不同版本之间存在不一致引起的[^2]。为了防止此类情况发生,请仔细检查 Maven 构建工具中的 pom.xml 是否显式声明了过高或者过低版本的依赖项。必要时可以强制绑定到所需的具体版本,比如 protobuf-java-2.5.0.jar。 #### 5. **测试 ClassPath 正常性** 最后一步是通过命令行尝试调用目标类来检验整个流程是否顺畅无阻塞。打开 CMD 输入下面语句执行测试: ```cmd %JAVA_HOME%\bin\java -cp "%HBASE_HOME%\lib\*" org.apache.hadoop.hbase.util.HBaseConfTool ``` 如果没有异常抛出则表明一切正常工作! --- ### 提供一段简单的脚本来辅助完成上述过程 (可选) 这里给出一个批处理 (.bat) 小工具帮助自动加载必要的环境设定并启动服务端口监听器。 ```batch @echo off :: Define paths here. SETLOCAL ENABLEDELAYEDEXPANSION set BASE_DIR=%~dp0.. set HBASE_HOME=!BASE_DIR!\hbase set HADOOP_HOME=!BASE_DIR!\hadoop set JAVA_HOME=C:\Progra~1\Java\jdk-x.y.z :: Add all jars from lib folder into CLASSPATH variable. for %%i in ("!HBASE_HOME!\lib\*.jar") do call :append_classpath "%%i" goto end_append_classpath :append_classpath if "!CLASSPATH!"=="" ( set CLASSPATH=%~1 ) else ( set CLASSPATH=!CLASSPATH!;%~1 ) exit /b :end_append_classpath :: Set up other required environment variables... set PATH=%JAVA_HOME%\bin;!PATH! :: Start the tool now. "%JAVA_HOME%\bin\java.exe" -Xmx1g -Dlog4j.configuration=file:"!HBASE_HOME!/conf/log4j.properties" ^ -cp "!CLASSPATH!" org.apache.hadoop.hbase.util.HBaseConfTool %* ENDLOCAL pause ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值