堆栈跟踪:在Bigtable

时间:2016-02-15 04:28:07

标签: mapreduce hbase google-cloud-bigtable

我们正在使用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

2 个答案:

答案 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-examplehttps://github.com/grpc/grpc-java/blob/master/SECURITY.md