Hive引擎

Hive默认引擎是MapReduce,性能更好的引擎是Spark、Tez。内存大的且集群只运行Spark的可以使用Spark引擎,因为Spark占用资源较多,不适合与其他计算引擎一起在一个集群启动。内存较少可以在一个集群和其他计算引擎同时启动,所以用的也挺多。

Tez引擎:是运行在YARN上的DAG,传统MapReduce必须一个Map一个Reduce,然后再接一个Map一个Reduce,每个Map和Reduce都有输入和输出,输出都是以文件的形式。Tez能把多个Map和Reduce任意组合,其实是将Map拆解成Input、Processor、Sort、Merge、Output,Reduce拆解成Input、Shuffle、Sort、Merge、Processor、Output等,拆解出的元操作可以任意组合,形成一个大的DAG,组合更加合理,减少了中间过程文件输出,所以性能大大提升。

使用Tez引擎时,下载解压到指定目录下,然后上传到hadoop的指定目录下,这里是/tez目录,在/etc/hadoop下增加tez-site.xml文件如下:

<configuration>
    <property>
        <name>tez.lib.uris</name><!-- 对应hdfs的目录 -->
        <value>${fs.defaultFS}/tez/tez-0.5.3.tar.gz</value>
    </property>
    <!-- 后面的几项可以不要 -->
    <property>
        <name>tez.use.cluster.hadoop-libs</name>
        <value>true</value>
    </property>
    <property>
        <name>tez.am.resource.memory.mb</name>
        <value>1024</value>
    </property>
    <property>
        <name>tez.am.resource.cpu.vcores</name>
        <value>1</value>
    </property>
    <property>
        <name>tez.container.max.java.heap.fraction</name>
        <value>0.4</value>
    </property>
    <property>
        <name>tez.task.resource.memory.mb</name>
        <value>1024</value>
    </property>
    <property>
        <name>tez.task.resource.cpu.vcores</name>
        <value>1</value>
    </property>
</configuration>

配置方式可以不用修改Hive,直接修改Hadoop即可,将tez的jar包拷贝到hadoop的classpath下,然后在hadoop-env.sh文件中添加(导入Tez的jar包到HADOOP_CLASSPATH变量中):

export TEZ_HOME=/oneapm/local/tez-0.5.3 # 是你的tez的解压目录
for jar in `ls $TEZ_HOME |grep jar`; do
    export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$TEZ_HOME/$jar
done
for jar in `ls $TEZ_HOME/lib`; do
    export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$TEZ_HOME/lib/$jar
done

在mapred-site.xml中修改:

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn-tez</value>
</property>

将修改的配置文件同步到其他节点。这种方式是MapReduce被tez替换,Hadoop集群都将使用Tez。

第二种方式(建议采用)是修改hive-site.xml文件:

<property>
    <name>hive.execution.engine</name>
    <value>tez</value>
</property>
<!-- 后面的可以不要 -->
<property>
    <name>hive.tez.container.size</name>
    <value>1024</value>
</property>

也可set hive.execution.engine=tez临时生效。

Hive的存放路径默认是使用当前用户名的,在/user/${user}下。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值