【问题标题】:Hive performance increaseHive 性能提升
【发布时间】:2012-11-17 12:56:15
【问题描述】:

我正在处理一个数据库 (2.5 GB),有些表只有 40 行,有些表有 900 万行数据。 当我对大表进行任何查询时,它需要更多时间。 我希望在更短的时间内获得结果

对只有 90 行的表的小查询-->

hive> select count(*) from cidade; 
Time taken: 50.172 seconds

hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
<description>Default block replication.
The actual number of replications can be specified when the file is created.
The default is used if replication is not specified in create time.
</description>
</property>

<property>
<name>dfs.block.size</name>
<value>131072</value>
<description>Default block replication.
The actual number of replications can be specified when the file is created.
The default is used if replication is not specified in create time.
</description>
</property>
</configuration>

这些设置会影响 hive 的性能吗? dfs.replication=3 dfs.block.size=131072

我可以从 hive 提示中将其设置为

hive>set dfs.replication=5

这个值是否只保留在特定会话中?

还是改成 .xml 文件更好?

【问题讨论】:

    标签: hive


    【解决方案1】:

    重要的是select count(*) 将导致 hive 启动 map reduce 作业。

    你可能认为这就像mysql查询一样快。

    但即使是hadoop中最简单的map reduce作业,总时间也包括提交到job tracker,将任务分配给task tracker等。所以总时间至少有几十秒。

    在一张大桌子上试试select count(*)。时间不会增加太多。

    因此,您需要了解 hive 和 hadoop 处理大数据。

    【讨论】:

      【解决方案2】:

      dfs.replication 不应影响配置单元查询的运行时间。它是从 hdfs-site.xml 公开的一个属性,用于确定将数据块复制到多少个 HDFS 节点。 dfs.replication of 3 表示每个数据块位于 3 个节点上(总共)。因此,它不适用于特定的会话。

      【讨论】:

      • 还有哪些参数可以提高性能先生?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-04
      • 2017-10-08
      • 2015-12-26
      • 2013-05-12
      相关资源
      最近更新 更多