2. Hive编译
Hive编译
- 拉取源码
cd /opt/software/source
git clone https://git-wip-us.apache.org/repos/asf/hive.git- 修改pom.xml,将guava的版本改为如下版本
<guava.version>27.0-jre</guava.version>修改以下文件中关于 com.google.common.util.concurrent.Futures#addCallback 的调用
- src\java\org\apache\hadoop\hive\llap\AsyncPbRpcProxy.java
//173行 Futures.addCallback( future, new ResponseCallback<U>( request.getCallback(), nodeId, this) ,executor); //278行 Futures.addCallback(requestManagerFuture, new FutureCallback<Void>() { @Override public void onSuccess(Void result) { LOG.info("RequestManager shutdown"); } @Override public void onFailure(Throwable t) { if (!(t instanceof CancellationException)) { LOG.warn("RequestManager shutdown with error", t); } } }, requestManagerExecutor);- src\java\org\apache\hadoop\hive\llap\daemon\impl\AMReporter.java
//162行 Futures.addCallback(queueLookupFuture, new FutureCallback<Void>() { @Override public void onSuccess(Void result) { LOG.info("AMReporter QueueDrainer exited"); } @Override public void onFailure(Throwable t) { if (t instanceof CancellationException && isShutdown.get()) { LOG.info("AMReporter QueueDrainer exited as a result of a cancellation after shutdown"); } else { LOG.error("AMReporter QueueDrainer exited with error", t); Thread.getDefaultUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), t); } } }, queueLookupExecutor); //266行 Futures.addCallback(future, new FutureCallback<Void>() { @Override public void onSuccess(Void result) { LOG.info("Sent taskKilled for {}", taskAttemptId); } @Override public void onFailure(Throwable t) { LOG.warn("Failed to send taskKilled for {}. The attempt will likely time out.", taskAttemptId); } }, executor); //331行 Futures.addCallback(future, new FutureCallback<Void>() { @Override public void onSuccess(Void result) { // Nothing to do. } @Override public void onFailure(Throwable t) { QueryIdentifier currentQueryIdentifier = amNodeInfo.getQueryIdentifier(); amNodeInfo.setAmFailed(true); LOG.warn("Heartbeat failed to AM {}. Marking query as failed. query={}", amNodeInfo.amNodeId, currentQueryIdentifier, t); queryFailedHandler.queryFailed(currentQueryIdentifier); } }, executor);- src\java\org\apache\hadoop\hive\llap\daemon\impl\LlapTaskReporter.java
//131行 Futures.addCallback(future, new HeartbeatCallback(errorReporter), heartbeatExecutor);- src\java\org\apache\hadoop\hive\llap\daemon\impl\TaskExecutorService.java
//178行 Futures.addCallback(future, new WaitQueueWorkerCallback(), executionCompletionExecutorServiceRaw); //692行 Futures.addCallback(future, wrappedCallback, executionCompletionExecutorService);- src\java\org\apache\hadoop\hive\llap\tezplugins\LlapTaskSchedulerService.java
//747行 Futures.addCallback(nodeEnablerFuture, new LoggingFutureCallback("NodeEnablerThread", LOG),nodeEnabledExecutor); //751行 Futures.addCallback(delayedTaskSchedulerFuture, new LoggingFutureCallback("DelayedTaskSchedulerThread", LOG),delayedTaskSchedulerExecutor); //755行 Futures.addCallback(schedulerFuture, new LoggingFutureCallback("SchedulerThread", LOG),schedulerExecutor);- src\java\org\apache\hadoop\hive\ql\exec\tez\WorkloadManager.java
//1089行 Futures.addCallback(future, FATAL_ERROR_CALLBACK, timeoutPool); //1923行 Futures.addCallback(getFuture, this,timeoutPool); //1977行 Futures.addCallback(waitFuture, this, timeoutPool);- src\test\org\apache\hadoop\hive\ql\exec\tez\SampleTezSessionState.java
//121行 Futures.addCallback(waitForAmRegFuture, new FutureCallback<Boolean>() { @Override public void onSuccess(Boolean result) { future.set(session); } @Override public void onFailure(Throwable t) { future.setException(t); } },timeoutPool);编译
mvn clean package -Pdist -DskipTests -Dmaven.javadoc.skip=true