cdh5 hive on tez

1 篇文章 0 订阅
  1. 下载tez源码编译,0.8支持hadoop2.6+,0.9支持hadoop2.7+,cdh5.x使用hadoop2.6这里下载tez-0.8.5

  Apache Downloads

  tar -zxvf tez-0.8.5.tar.gz

  1. 安装编译环境

2.1安装JDK1.8

2.2安装Maven3
下载安装包:apache-maven-3.5.4-bin.tar.gz

tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local/software/maven

[root@cm ~]# vim /etc/profile

export MAVEN_HOME=/usr/local/software/maven/apache-maven-3.5.4

export PATH=${MAVEN_HOME}/bin:$PATH

source /etc/profile

  2.3 安装os依赖

      yum -y install gcc gcc-c++ libstdc++-devel make build

  2.4.安装Protobuf2.5.0,需要通过源码的方式编译安装

     https://github.com/protocolbuffers/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz

[root@cdh05 tez-0.8.5]# tar -zxvf protobuf-2.5.0.tar.gz

[root@cdh05 tez-0.8.5]# cd protobuf-2.5.0/

[root@cdh05 protobuf-2.5.0]# ./configure

[root@cdh05 protobuf-2.5.0]# make & make install

[root@cdh05 tez-0.8.5]# protoc --version

  1. 修改tez项目

  3.1 修改pom.xml

   3.1.1修改hadoop依赖版本

3.1.2 添加cloudera仓库  

<repositories>

  <repository>

    <id>cloudera</id>

    <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>

    <name>Cloudera Repositories</name>

    <snapshots>

      <enabled>false</enabled>

    </snapshots>

  </repository></repositories>

<pluginRepositories>

  <pluginRepository>

    <id>cloudera</id>

    <name>Cloudera Repositories</name>

    <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>

  </pluginRepository></pluginRepositories>

 

3.1.3 屏蔽tez-ext-service-tests、tez-ui、tez-ui2三个模块暂不做编译

3.1.4 添加依赖

<dependency>

        <groupId>org.codehaus.jackson</groupId>

        <artifactId>jackson-mapper-asl</artifactId>

        <version>1.9.13</version>

      </dependency>

      <dependency>

        <groupId>org.codehaus.jackson</groupId>

        <artifactId>jackson-core-asl</artifactId>

        <version>1.9.13</version>

      </dependency>

      <dependency>

        <groupId>org.codehaus.jackson</groupId>

        <artifactId>jackson-jaxrs</artifactId>

        <version>1.9.13</version>

      </dependency>

      <dependency>

        <groupId>org.codehaus.jackson</groupId>

        <artifactId>jackson-xc</artifactId>

        <version>1.9.13</version>

      </dependency>

3.1.5修改/JobContexImpl.java文件

  vi /root/wf/apache-tez-0.8.5-src/tez-mapreduce/src/main/java/org/apache/tez/mapreduce/hadoop/mapreduce/JobContexImpl.java

在最后加上方法:

 /**

 * Get the boolean value for the property that specifies which classpath

 * takes precedence when tasks are launched. True - user's classes takes

 * precedence. False - system's classes takes precedence.

 * @return true if user's classes should take precedence

 */

 @Override

 public boolean userClassesTakesPrecedence() {

  return getJobConf().getBoolean(MRJobConfig.MAPREDUCE_JOB_USER_CLASSPATH_FIRST, false);

 }

  1. 编译tez项目

   mvn clean package -DskipTests=true -Dmaven.javadoc.skip=true

 编译完成后 tez包在 apache-tez-0.8.5-src/tez-dist/target下

  

 

  1. 上传tez包到hdfs上

hdfs dfs -mkdir /user/tez

hdfs dfs -chmod -R 775 /user/tez/

hdfs dfs -put tez-0.8.5.tar.gz /user/tez/

hdfs dfs -ls /user/tez

  1. linux创建tez目录  /opt/cloudera/parcels/tez

    cd /opt/cloudera/parcels

mkdir tez

cd tez

    mkdir conf

  1. 拷贝tez-0.8.5-minimal下的jar包到tez目录

cp tez-0.8.5-minimal/*.jar /opt/cloudera/parcels/tez/

cp -r tez-0.8.5-minimal/lib /opt/cloudera/parcels/tez/

 

  1. 新建tez配置文件

cd tez/conf

vi  tez-site.xml

 

<configuration>

<property>

   <name>tez.lib.uris</name>

    <!-- 这里指向hdfs上的tez.tar.gz包 -->

   <value>/user/tez/tez-0.8.5.tar.gz</value>

</property>

<property>

  <name>tez.use.cluster.hadoop-libs</name>

  <value>false</value>

  <description>使用hadoop自身的lib包,设置为true的话可以使用minimal的tez包,false的话需要使用tez-0.8.5.tar.gz的包</description>

</property>

<property>

  <name>hive.tez.container.size</name>

  <value>4096</value>

  <description>Set hive.tez.container.size to be the same as or a small multiple(1 or 2 times that) of YARN container size yarn.scheduler.minimum-allocation-mb but NEVER more than yarn.scheduler.maximum-allocation-mb</description>

</property>

 <property>

    <name>tez.task.launch.env</name>

    <value>LD_LIBRARY_PATH=/opt/cloudera/parcels/CDH/lib/hadoop/lib/native</value>

  </property>

  <property>

    <name>tez.am.launch.env</name>

    <value>LD_LIBRARY_PATH=/opt/cloudera/parcels/CDH/lib/hadoop/lib/native</value>

  </property>

</configuration>

  1. CM配置tez ,进入hive配置

HADOOP_CLASSPATH=/opt/cloudera/parcels/tez/conf:/opt/cloudera/parcels/tez/*:/opt/cloudera/parcels/tez/lib/*

 

 

  1. 重启hive

  执行任务tez任务kryo异常

 

解决:

cp  /opt/cloudera/parcels/CDH/jars/kryo-2.22.jar /opt/cloudera/parcels/tez/lib

上传hdfs的tez-0.8.5.tar.gz也需要修改加上kryo-2.22.jar包

  1.  将/opt/cloudera/parcels/tez目录复制到所有节点

scp -r tez/ bdpnode2:/opt/cloudera/parcels/

  1.  重启hive,验证

    

 

Tez 设置队列

set tez.queue.name=root.test;

Hive设置tez引擎

set hive.execution.engine=tez;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CDH(Cloudera's Distribution for Hadoop)是Cloudera公司针对Hadoop生态系统进行的一系列软件包和工具的集成,其中包括Hive on Spark的配置。 Hive是一个建立在Hadoop之上的数据仓库基础架构,它提供了类似于SQL的查询语言HiveQL,方便用户使用SQL语言对存储在Hadoop中的大型数据集进行查询和分析。Spark是一个快速、通用的数据处理引擎,具有内存计算的特性,能在内存中高效地处理大规模数据。 在CDH中配置Hive on Spark需要进行以下步骤: 1. 确保CDH集群已经正确安装和配置,并且已经启动了Hive服务和Spark服务。 2. 在CDH管理界面中,选择Hive服务,然后点击“配置”选项卡。 3. 在配置页面中,找到“Hive 服务”下的“Ancillary Service Configuration”部分。在“Spark”部分中,填写正确的Spark主节点地址和端口号。 4. 点击“保存并重启”以应用配置更改。 5. 在CDH管理界面中,选择Spark服务,然后点击“配置”选项卡。 6. 在配置页面中,找到“Spark 特定”的部分。在“Spark 实例模式”中选择“Standalone”,表示将使用独立的Spark集群。 7. 在“Spark 主节点地址”中填写正确的Spark主节点的地址。 8. 点击“保存并重启”以应用配置更改。 9. 配置完成后,可以使用HiveQL语句在Hive中使用Spark进行查询和分析数据。在Hive命令行或Hue界面中,编写需要的查询语句并执行。 通过以上步骤,就可以在CDH上成功配置Hive on Spark。这样就可以同时利用Hive和Spark的强大功能,实现对大规模数据的高效分析和处理。 ### 回答2: CDH配置Hive on Spark是指在CDH平台上配置使用Spark作为Hive的计算引擎。下面是具体的步骤: 1. 首先,确保已经在CDH平台上安装了Hive和Spark组件。 2. 在Hive的配置文件中,需要添加以下参数来启用Hive on Spark: hive.execution.engine = spark hive.spark.client.connect.timeout = 300s hive.spark.client.server.connect.timeout = 300s 3. 在Spark的配置文件中,需要增加以下参数来支持Hive on Spark: spark.master = yarn-client spark.deploy.mode = client spark.submit.deployMode = client spark.yarn.queue = default spark.executor.instances = 10 spark.executor.memory = 4G spark.executor.cores = 2 spark.driver.memory = 4G 4. 然后,重启Hive和Spark的服务。 5. 运行Hive脚本或者Hive命令时,可以在Hive中使用"hive.execution.engine=spark"设置为Spark引擎,或者在命令行中使用"--engine=spark"参数。 配置完成后,Hive会将相应的作业提交给Spark来执行,利用Spark的分布式计算能力加速Hive查询的执行速度。需要注意的是,配置Hive on Spark需要确保CDH平台中的Hive和Spark是兼容的,并且调整Spark的资源配置以满足计算需求。 总之,通过CDH配置Hive on Spark可以充分发挥Spark的并行处理能力,提高Hive查询的执行效率和性能。 ### 回答3: CDH是一种大数据解决方案,用于配置Hive on Spark的步骤如下: 1. 首先,确保已安装CDH集群并启动了Hive和Spark组件。如果还没有安装,请按照CDH文档进行安装和配置。 2. 检查Hive和Spark的版本兼容性。Hive on Spark需要Hive和Spark版本之间的兼容性,查看CDH文档以了解哪些版本适用于您的集群。 3. 在Hive配置文件中启用Hive的Spark支持。打开Hive配置文件(hive-site.xml),设置hive.execution.engine为spark。 4. 配置Spark属性。在Spark配置文件(spark-defaults.conf)中,设置spark.master为yarn-client或yarn-cluster,这取决于您的CDH集群配置。还可以通过设置其他属性来优化Spark执行引擎的性能。 5. 启动Hive服务。重启Hive服务以使配置更改生效。您可以使用以下命令重新启动Hive服务: sudo service hive-server2 restart 6. 测试Hive on Spark。使用Hive命令行或其他Hive客户端,运行一些Hive查询并确认它们是否在Spark上执行。 配置Hive on Spark可以提供更好的性能和资源利用率。而且,使用Spark作为执行引擎还可以充分利用Spark提供的丰富的数据处理功能和API。通过使用CDH的Hive on Spark配置,您可以更好地处理和分析大规模的数据集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值