我们正在使用Google Cloud Bigtable来处理大数据。 当我运行MapReduce作业时,我组装了一个jar并运行它,现在我收到了这个错误:
由于AM,应用程序application_1451577928704_0050失败了2次 appattempt_1451577928704_0050_000002的容器已退出 exitCode:1要获得更详细的输出,请检查应用程序跟踪 页面:http:// 截尾:8088 /簇/应用程序/ application_1451577928704_0050Then, 单击每个尝试的日志链接。诊断:来自的例外 集装箱推出。容器ID: container_e02_1451577928704_0050_02_000001退出代码:1堆栈跟踪: ExitCodeException exitCode = 1:at org.apache.hadoop.util.Shell.runCommand(Shell.java:545)at org.apache.hadoop.util.Shell.run(Shell.java:456)at org.apache.hadoop.util.Shell $ ShellCommandExecutor.execute(Shell.java:722) 在 org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:211) 在 org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:302) 在 org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:82) 在java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617) 在java.lang.Thread.run(Thread.java:745)容器退出时带有 非零退出代码1未通过此尝试。申请失败。
当我登录以查看workers节点的日志记录时,我看到了这个错误:
2016-02-15 02:59:54,106 INFO [主要] org.apache.hadoop.mapreduce.v2.app.MRAppMaster:创建MRAppMaster 申请appattempt_1451577928704_0050_000001 2016-02-15 02:59:54,294 WARN [main] org.apache.hadoop.util.NativeCodeLoader: 无法为您的平台加载native-hadoop库...使用 builtin-java classes适用的地方2016-02-15 02:59:54,319 INFO [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster:执行时 代币:2016-02-15 02:59:54,319 INFO [主要] org.apache.hadoop.mapreduce.v2.app.MRAppMaster:种类: YARN_AM_RM_TOKEN,服务:,Ident:(appAttemptId {application_id { id:50 cluster_timestamp:1451577928704} attemptId:1} keyId: - ******)2016-02-15 02:59:54,424 INFO [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster:使用mapred newApiCommitter。 2016-02-15 02:59:54,755 WARN [主要] org.apache.hadoop.hdfs.shortcircuit.DomainSocketFactory:The 由于libhadoop,不能使用短路本地读取功能 无法加载。 2016-02-15 02:59:54,655 INFO [主要] org.apache.hadoop.mapreduce.v2.app.MRAppMaster:OutputCommitter set in config null 2016-02-15 02:59:54,911 INFO [main] org.apache.hadoop.service.AbstractService:服务 org.apache.hadoop.mapreduce.v2.app.MRAppMaster状态为INITED失败; 原因:org.apache.hadoop.yarn.exceptions.YarnRuntimeException: java.lang.ClassCastException: org.apache.xerces.dom.DeferredElementNSImpl无法强制转换为 org.w3c.dom.Text中 org.apache.hadoop.yarn.exceptions.YarnRuntimeException: java.lang.ClassCastException: org.apache.xerces.dom.DeferredElementNSImpl无法强制转换为 org.w3c.dom.Text at org.apache.hadoop.mapreduce.v2.app.MRAppMaster $ 1.call(MRAppMaster.java:478) 在 org.apache.hadoop.mapreduce.v2.app.MRAppMaster $ 1.call(MRAppMaster.java:458) 在 org.apache.hadoop.mapreduce.v2.app.MRAppMaster.callWithJobClassLoader(MRAppMaster.java:1560) 在 org.apache.hadoop.mapreduce.v2.app.MRAppMaster.createOutputCommitter(MRAppMaster.java:458) 在 org.apache.hadoop.mapreduce.v2.app.MRAppMaster.serviceInit(MRAppMaster.java:377) 在 org.apache.hadoop.service.AbstractService.init(AbstractService.java:163) 在 org.apache.hadoop.mapreduce.v2.app.MRAppMaster $ 4.run(MRAppMaster.java:1518) 在java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:422)at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657) 在 org.apache.hadoop.mapreduce.v2.app.MRAppMaster.initAndStartAppMaster(MRAppMaster.java:1515) 在 org.apache.hadoop.mapreduce.v2.app.MRAppMaster.main(MRAppMaster.java:1448) 引起:java.lang.ClassCastException: org.apache.xerces.dom.DeferredElementNSImpl无法强制转换为 org.w3c.dom.Text at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:2603) 在 org.apache.hadoop.conf.Configuration.loadResources(Configuration.java:2502) 在 org.apache.hadoop.conf.Configuration.getProps(Configuration.java:2405) 在org.apache.hadoop.conf.Configuration.get(Configuration.java:981) 在 org.apache.hadoop.conf.Configuration.getTrimmed(Configuration.java:1031) 在 org.apache.hadoop.conf.Configuration.getBoolean(Configuration.java:1432) 在 org.apache.hadoop.hbase.HBaseConfiguration.checkDefaultsVersion(HBaseConfiguration.java:67) 在 org.apache.hadoop.hbase.HBaseConfiguration.addHbaseResources(HBaseConfiguration.java:81) 在 org.apache.hadoop.hbase.HBaseConfiguration.create(HBaseConfiguration.java:96) 在 org.apache.hadoop.hbase.HBaseConfiguration.create(HBaseConfiguration.java:105) 在 org.apache.hadoop.hbase.mapreduce.TableOutputFormat.setConf(TableOutputFormat.java:184) 在 org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:76) 在 org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:136) 在 org.apache.hadoop.mapreduce.v2.app.MRAppMaster $ 1.call(MRAppMaster.java:474) ......还有11个
我尝试了一个较旧的罐子,它运行得非常好,我不确定为什么新的罐子不会起作用 - 没有改变任何东西。
请指教?
谢谢!
更新1:这是更多细节: 我使用dataproc设置了集群。 我们使用的是最新版本,这里是库依赖项:
val BigtableHbase =" com.google.cloud.bigtable" %" bigtable-hbase-1.1" %" 0.2.2" val BigtableHbaseMapreduce =" com.google.cloud.bigtable" % " BigTable中-HBase的-映射精简" %" 0.2.2" val CommonsCli =" commons-cli" % "公共-CLI" %" 1.2" val HadoopCommon =" org.apache.hadoop" % " Hadoop的共同" %" 2.7.1" val HadoopMapreduceClientApp = " org.apache.hadoop" %" hadoop-mapreduce-client-app" %" 2.7.1" VAL HbaseCommon =" org.apache.hbase" %" hbase-common" %" 1.1.2" VAL HbaseProtocol =" org.apache.hbase" %" hbase-protocol" %" 1.1.2" VAL HbaseClient =" org.apache.hbase" %" hbase-client" %" 1.1.2" VAL HbaseServer =" org.apache.hbase" %" hbase-server" %" 1.1.2" VAL HbaseAnnotations =" org.apache.hbase" %" hbase-annotations" %" 1.1.2"
libraryDependencies + = BigtableHbase libraryDependencies + = BigtableHbaseMapreduce libraryDependencies + = CommonsCli libraryDependencies + = HadoopCommon libraryDependencies + = HadoopMapreduceClientApp libraryDependencies + = HbaseCommon libraryDependencies + = HbaseProtocol libraryDependencies + = HbaseClient libraryDependencies + = HbaseServer libraryDependencies + = HbaseAnnotations
Java版:
openjdk version" 1.8.0_66-internal" OpenJDK运行时环境(构建 1.8.0_66-internal-b17)OpenJDK 64位服务器VM(版本25.66-b17,混合模式)
Alpn版本:alpn-boot-8.1.3.v20150130
hbase verison:
2016-02-15 20:45:42,050 INFO [main] util.VersionInfo:HBase 1.1.2 2016-02-15 20:45:42,051 INFO [main] util.VersionInfo:源代码 存储库文件:/// mnt / ram / bigtop / bigtop / output / hbase / hbase-1.1.2 revision = Unknown 2016-02-15 20:45:42,051 INFO [main] util.VersionInfo:由2015年11月10日星期二19:09:17 UTC的bigtop编译 2016-02-15 20:45:42,051 INFO [main] util.VersionInfo:来源 与校验和42e8a1890c700d37485c69a44a3
hadoop版本:
Hadoop 2.7.1 Subversion https://bigdataoss-internal.googlesource.com/third_party/apache/bigtop -r 2a194d4d838b79460c3ceb892f3c94 44218ba970由bigtop编译于2015-11-10T18:38Z使用protoc 2.5.0编译来自带校验和的源代码 fc0a1a23fc1868e4d5ee7fa2b28a58a此命令是使用运行的 /usr/lib/hadoop/hadoop-common-2.7.1.jar
答案 0 :(得分:2)
我发现问题在我的情况下! hbase-site.xml在hbase.client.connection.impl属性中略有不同。
<property>
<name>hbase.client.connection.impl</name>
<value>com.google.cloud.bigtable.hbase1_1.BigtableConnection</value>
</property>
在提取并比较两个罐子后,我得到了这个。
答案 1 :(得分:0)
较大版本的bigtable客户端jar包括较新版本的gRPC jar。较新版本的gRPC jar依赖于较新版本的alpn-boot或OpenSSL。除了新版本的bigtable jar之外,您可能还需要一个新版本的alpn-boot jar。不幸的是,Jetty团队没有为Java7制作新的alpn-boot jar,而ddu依赖于它。
我们正在积极致力于从bdutil转向数据流,这是Google Cloud Hadoop管理的新版本。 Dataproc使用Java 8,与bdutil没有相同的问题。我们还需要解决这个问题。
更多信息可在以下网址找到:
https://cloud.google.com/dataproc/examples/cloud-bigtable-example 和 https://github.com/grpc/grpc-java/blob/master/SECURITY.md