我正在尝试运行Terasort基准测试,我得到以下异常:
java.lang.RuntimeException: Error in configuring object
at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:93)
at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:64)
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117)
at org.apache.hadoop.mapred.MapTask$OldOutputCollector.<init>(MapTask.java:573)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:435)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:371)
at org.apache.hadoop.mapred.Child$4.run(Child.java:259)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)
at org.apache.hadoop.mapred.Child.main(Child.java:253)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:88)
... 10 more
Caused by: java.lang.IllegalArgumentException: can't read paritions file
at org.apache.hadoop.examples.terasort.TeraSort$TotalOrderPartitioner.configure(TeraSort.java:213)
... 15 more
Caused by: java.io.FileNotFoundException: File _partition.lst does not exist.
at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:371)
at org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:245)
at org.apache.hadoop.fs.FileSystem.getLength(FileSystem.java:720)
at org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1417)
at org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1412)
at org.apache.hadoop.examples.terasort.TeraSort$TotalOrderPartitioner.readPartitions(TeraSort.java:153)
at org.apache.hadoop.examples.terasort.TeraSort$TotalOrderPartitioner.configure(TeraSort.java:210) …Run Code Online (Sandbox Code Playgroud) 我有名为part-r-000 [0-9] [0-9]的文件,其中包含制表符分隔的字段.我可以使用hadoop fs -text part-r-00000它来查看它们,但无法使用猪来加载它们.
我尝试过的:
x = load 'part-r-00000';
dump x;
x = load 'part-r-00000' using TextLoader();
dump x;
Run Code Online (Sandbox Code Playgroud)
但这只会给我垃圾.如何使用猪查看文件?
可能相关的是我的hdfs目前仍在使用CDH-2.此外,如果我将文件下载到本地并运行file part-r-00000它说part-r-00000: data,我不知道如何在本地解压缩它.
我已经建立了一个Hadoop集群(通过Cloudera Manager使用Cloudera发行版),我正在使用Hue接口运行一些Hive查询,该接口使用下面的Beeswax.
我的所有查询运行正常,我甚至成功部署了自定义UDF.
但是,在部署UDF时,我遇到了一个非常令人沮丧的版本问题.在我的UDF类的初始版本中,我使用了导致a的第三方类StackOverflowError.
我修复了这个错误,然后验证了可以从hive命令行成功部署和使用UDF.
然后,当我再次使用Hue和Beeswax时,我不断得到同样的错误.我只能通过更改我的UDF java类名来解决这个问题.(从Lower到Lower2).
现在,我的问题是,处理这类版本问题的正确方法是什么?
据我所知,当我使用左边的方便表单字段添加jar时,它们会被添加到分布式缓存中.那么,如何刷新/清除分布式缓存?(我无法LIST JARS;从Hive/Beeswax中运行等.它给我一个语法错误.)
我正在寻找能够运行与示例和测试jar相关联的hadoop作业的jar文件.在过去,他们在/ usr/lib/hadoop下,但显然不再.指针赞赏.
注意:这个问题最初是针对CDH4.2的.但是一些答案包括更高版本的信息
我正在尝试使用Red Hat 5上的伪分布式模式在CDH4上设置Cloudera Impala.我有Hive使用JDBC连接到MySQL Metastore,但是我在使用JDBC设置Impala时遇到了麻烦.我一直在按照此处的说明操作:http://www.cloudera.com/content/cloudera-content/cloudera-docs/Impala/latest/Installing-and-Using-Impala/ciiu_impala_jdbc.html
我已经将JAR解压缩到一个目录并包含该目录$CLASSPATH.我也包括/usr/lib/hive/lib在$CLASSPATH里面了mysql-connector-java-5.1.25-bin.jar.
在我的Hive和Impala conf目录中,我hive-site.xml包含以下属性:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost/metastore</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hiveuser</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>password</value>
</property>
<property>
<name>datanucleus.autoCreateSchema</name>
<value>false</value>
</property>
<property>
<name>datanucleus.fixedDatastore</name>
<value>true</value>
</property>
Run Code Online (Sandbox Code Playgroud)
但是当我运行时sudo service impala-server restart,服务器日志有这个错误:
ERROR common.MetaStoreClientPool: Error initializing Hive Meta Store client
javax.jdo.JDOFatalInternalException: Error creating transactional connection factory
Run Code Online (Sandbox Code Playgroud)
它说的原因是:
Caused by: org.datanucleus.store.rdbms.datasource.DatastoreDriverNotFoundException: The specified datastore driver ("com.mysql.jdbc.Driver") was not found in the …Run Code Online (Sandbox Code Playgroud) 我经常在cloudera经理中得到以下错误:
This DataNode is not connected to one or more of its NameNode(s).
Run Code Online (Sandbox Code Playgroud)
和
The Cloudera Manager agent got an unexpected response from this role's web server.
Run Code Online (Sandbox Code Playgroud)
(通常在一起,有时只有一个)
在SO和Google中大多数对这些错误的引用中,问题是配置问题(并且数据节点从不连接到名称节点)
在我的情况下,数据节点通常在启动时连接,但在一段时间后松开连接 - 因此它似乎不是一个糟糕的配置.
样本日志(错误随时变化)
2014-02-25 06:39:49,179 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: exception:
java.net.SocketTimeoutException: 480000 millis timeout while waiting for channel to be ready for write. ch : java.nio.channels.SocketChannel[connected local=/10.56.144.18:50010 remote=/10.56.144.28:48089]
at org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:165)
at org.apache.hadoop.net.SocketOutputStream.write(SocketOutputStream.java:153)
at org.apache.hadoop.net.SocketOutputStream.write(SocketOutputStream.java:114)
at org.apache.hadoop.hdfs.server.datanode.BlockSender.sendPacket(BlockSender.java:504)
at org.apache.hadoop.hdfs.server.datanode.BlockSender.sendBlock(BlockSender.java:673)
at org.apache.hadoop.hdfs.server.datanode.DataXceiver.readBlock(DataXceiver.java:338)
at org.apache.hadoop.hdfs.protocol.datatransfer.Receiver.opReadBlock(Receiver.java:92)
at org.apache.hadoop.hdfs.protocol.datatransfer.Receiver.processOp(Receiver.java:64)
at org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:221)
at java.lang.Thread.run(Thread.java:662) …Run Code Online (Sandbox Code Playgroud) 代码如下:
Run Code Online (Sandbox Code Playgroud)hiveContext.sql("SELECT * FROM TABLE_NAME WHERE PARTITION_KEY = 'PARTITION_VALUE'") .rdd .map{case (row:Row) =>((row.getString(0), row.getString(12)), (row.getTimestamp(11), row.getTimestamp(11), row))} .filter{case((client, hash),(d1,d2,obj)) => (d1 !=null && d2 !=null)} .reduceByKey{ case(x, y)=> if(x._1.before(y._1)){ if(x._2.after(y._2)) (x) else (x._1, y._2, y._3) }else{ if(x._2.after(y._2)) (y._1, x._2, x._3) else (y) } }.count()
其中ReadDailyFileDataObject是一个case行,它将行字段保存为容器.容器是必需的,因为有30列,超过22的元组限制.
当我使用Row本身而不是case Class时,更新了Code,删除了case类,因为我看到同样的问题.
现在我看到了
任务:10/7772
输入:2.1 GB
随机写:14.6 GB
如果它有帮助,我试图处理存储为镶木地板文件的表,包含210亿行.
以下是我正在使用的参数,
"spark.yarn.am.memory" -> "10G"
"spark.yarn.am.cores" -> "5"
"spark.driver.cores" -> "5"
"spark.executor.cores" -> "10"
"spark.dynamicAllocation.enabled" -> "true"
"spark.yarn.containerLauncherMaxThreads" -> "120"
"spark.executor.memory" -> "30g" …Run Code Online (Sandbox Code Playgroud) 我创建了两个表:
1)一个用于分区的分区
2)只有分层表
我知道hive中分区和分区的概念.但我有点困惑,因为我已经读过'partition creates directory and bucketing creates files'.我同意第一部分,因为我可以在HDFS Hive Warehouse中看到,但ONLY除了我加载到表中的数据文件之外,我无法在HDFS中看到任何用于bucketing表的文件.那么ONLYbucketing表的文件在哪里?我能够在分区目录下看到的文件是一个喜欢的文件,eg: 00000_0但是这个文件可以用于分区表但是另一个bucketed表呢?
下面是我创建表的代码:
CREATE TABLE Employee(
ID BIGINT,
NAME STRING,
SALARY BIGINT,
COUNTRY STRING
)
CLUSTERED BY(ID) INTO 5 BUCKETS
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
Run Code Online (Sandbox Code Playgroud)
负载数据代码如下:
load data local inpath '/home/cloudera/Desktop/SampleData.txt' into table employee;
Run Code Online (Sandbox Code Playgroud)
我已经读过,当我们创建表时会创建存储桶.如果我遗漏了某些内容或出错了,请更正我.有人请帮忙吗?
我有一个oozie工作流程,在4台机器的CDH4集群上运行(一个掌握一切,三个"哑"工人).hive Metastore使用mysql(驱动程序存在)在master上运行,oozie服务器也使用mysql在master上运行.使用Web界面,我可以按预期导入和查询配置单元,但是当我在oozie工作流程中执行相同的查询时,它会失败.即使添加"IF EXISTS"也会导致下面的错误.我尝试将连接信息作为属性添加到hive作业,但没有任何成功.
任何人都可以给我一个提示吗?我错过了什么吗?需要进一步的信息吗?
这是作业日志的输出:
Script [drop.sql] content:
------------------------
DROP TABLE IF EXISTS performance_log;
------------------------
Hive command arguments :
-f
drop.sql
=================================================================
>>> Invoking Hive command line now >>>
Intercepting System.exit(10001)
<<< Invocation of Main class completed <<<
Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.HiveMain], exit code [10001]
Oozie Launcher failed, finishing Hadoop job gracefully
Run Code Online (Sandbox Code Playgroud)
这是错误消息:
FAILED: SemanticException [Error 10001]: Table not found performance_log
Intercepting System.exit(10001)
Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.HiveMain], exit code [10001]
Run Code Online (Sandbox Code Playgroud) 我试图建立一个ClouderaHadoop集群,与包含一个主节点namenode,secondarynamenode并且jobtracker,和含有另外两个节点datanode和tasktracker。该Cloudera版本是4.6,操作系统是Ubuntu的精确64。此外,该集群是从AWS实例创建的。ssh passwordless还已经Java安装了Oracle-7。
每当执行sudo service hadoop-hdfs-namenode start我都会得到:
2014-05-14 05:08:38,023 FATAL org.apache.hadoop.hdfs.server.namenode.NameNode: Exception in namenode join
java.lang.IllegalArgumentException: Invalid URI for NameNode address (check fs.defaultFS): file:/// has no authority.
at org.apache.hadoop.hdfs.server.namenode.NameNode.getAddress(NameNode.java:329)
at org.apache.hadoop.hdfs.server.namenode.NameNode.getAddress(NameNode.java:317)
at org.apache.hadoop.hdfs.server.namenode.NameNode.getRpcServerAddress(NameNode.java:370)
at org.apache.hadoop.hdfs.server.namenode.NameNode.loginAsNameNodeUser(NameNode.java:422)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:442)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:621)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:606)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1177)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1241)
Run Code Online (Sandbox Code Playgroud)
我的core-site.xml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. …Run Code Online (Sandbox Code Playgroud)