对于较小的查询(期望以交互方式获得结果,以分钟为单位,而不是几小时),Tez 的性能是否更好,而对于批处理查询(耗时数小时),MR 作为执行引擎的性能是否更好?或者我们可以说无论查询类型如何,Tez 始终是最佳选择?
我一直在aws emr 4.8使用 hive 1.0 和 tez 0.8的集群上运行一些 hive 脚本。
我的配置如下所示:
SET hive.exec.compress.output=true;
SET mapred.output.compression.type=BLOCK;
SET hive.exec.dynamic.partition = true;
SET hive.exec.dynamic.partition.mode = nonstrict;
set hive.execution.engine=tez;
set hive.merge.mapfiles=false;
SET hive.default.fileformat=Orc;
set tez.task.resource.memory.mb=5000;
SET hive.tez.container.size=6656;
SET hive.tez.java.opts=-Xmx5120m;
set hive.optimize.ppd=true;
Run Code Online (Sandbox Code Playgroud)
我的全局配置是:
hadoop-env.export HADOOP_HEAPSIZE 4750
hadoop-env.export HADOOP_DATANODE_HEAPSIZE 4750
hive-env.export HADOOP_HEAPSIZE 4750
Run Code Online (Sandbox Code Playgroud)
在运行我的脚本时,我收到以下错误:
Container [pid=19027,containerID=container_1477393351192_0007_02_000001] is running beyond physical memory limits. Current usage: 1.0 GB of 1 GB physical memory used; 1.9 GB of 5 GB virtual memory used. Killing container.
Run Code Online (Sandbox Code Playgroud)
在谷歌搜索这个错误时,我读到 set …
我对TEZ mapreduce工作有奇怪的行为。
我正在尝试从Hive读取日志数据,将其按ID,日期和其他一些参数分成一些块,然后写入另一个Hive表。
Map阶段的运行速度足够快,大约需要20分钟,而reducer开始工作,而458 Reducer中的453将在接下来的20分钟内处理所有数据。但是最后5个减速器工作约1个小时。
发生这种情况是因为我的输入数据包含一些巨大的条目,并且处理这些条目需要很多时间。这种情况下的最佳做法是什么?我是否应该进行一些hadoop / tez / hive调整以允许对最后一个reducer进行并行处理,或者将输入数据除以其他参数来避免大量输入会更聪明?
感谢您的任何建议。
at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:563)
at org.apache.hadoop.hive.ql.exec.tez.MapRecordSource.processRow(MapRecordSource.java:83)
... 17 more
Caused by: java.lang.ClassCastException: org.apache.hadoop.hive.ql.io.orc.OrcStruct cannot be cast to org.apache.hadoop.io.BinaryComparable
at org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe.doDeserialize(LazySimpleSerDe.java:166)
at org.apache.hadoop.hive.serde2.AbstractEncodingAwareSerDe.deserialize(AbstractEncodingAwareSerDe.java:71)
at org.apache.hadoop.hive.ql.exec.MapOperator$MapOpCtx.readRow(MapOperator.java:149)
at org.apache.hadoop.hive.ql.exec.MapOperator$MapOpCtx.access$200(MapOperator.java:113)
at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:554)
... 18 more
2019-09-19 11:50:29,860 [INFO] [TezChild] |task.TezTaskRunner|: Encounted an error while executing task: attempt_1568591126479_21189_1_01_000000_2
java.lang.RuntimeException: java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing writable {140725, 222117, 11A2, YYYYYYNN , F, R, SeLect Advntg RX OB, N, MATERNITY , I, 0.00, 04, N, N, Y, Y, Y, N, 003, A, B, , , , , …Run Code Online (Sandbox Code Playgroud)