节点信息请参考:

zookeeper: Apache Hadoop生态组件部署分享-zookeeper

hadoop:Apache Hadoop生态组件部署分享-Hadoop

说明: 本次选择的tez版本为0.10.2 ,hive版本为3.1.3 .如果你后续不需要ranger其实可以提高版本hive4.0.1+tez0.10.4

tez编译

下载地址: https://dlcdn.apache.org/tez/

1、解压到指定路径下

2、修改pom.xml依赖

主要修改内容为: <hadoop.version>3.3.5</hadoop.version>

其次保证:protobuf.version为2.5.0(有点忘记有没有修改了)

3、开始执行命令编译

mvn clean package -DskipTests -Pnoui注: -Pnoui参数是跳过tez ui模块编译(一是编译会遇到非常多问题,二是感觉用不到 目前看cdp产品的tez ui也是打不开的)

4、编译成功后你会在apache-tez-0.10.2-src/tez-dist/target路径下找到tar包后续hive会用到

Hive集群部署

1、 分发解压并修改名称

#将安装包分发到其他两个节点ansible hadoopsrcclustero -m copy -a "src=/opt/softs/apache-hive-3.1.3-bin.tar.gz dest=src=/opt/softs/"#解压到指定路径ansible hadoopsrccluster -m shell -a "tar -xf /opt/softs/apache-hive-3.1.3-bin.tar.gz -C /opt/apache_v00"#为了稍显正式修改其名称ansible hadoopsrccluster -m shell -a "mv /opt/apache_v00/apache-hive-3.1.3-bin /opt/apache_v00/apache-hive-3.1.3"

2、hive集成tez前的准备工作

#在hdfs上创建存放tez安装包的路径hdfs dfs -mkdir -p /user/tez/pkg
#将tez安装包上传至指定路径hdfs dfs -put /opt/softs/tez-0.10.2.tar.gz  /user/tez/pkg

3、tez-site.xml配置

/opt/apache_v00/hadoop-3.3.5/etc/hadoop/tez-site.xml

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- 指定依赖位置 --><property> <name>tez.lib.uris</name> <value>hdfs://nameservice1/user/tez/pkg/tez-0.10.2.tar.gz</value></property><property> <description>控制 Tez 运行时是否使用集群环境中已存在的 Hadoop 库(如 HDFS、YARN、MapReduce 的 JAR 文件),而不是使用 Tez 自带的版本</description> <name>tez.use.cluster.hadoop-libs</name> <value>false</value></property><property> <name>tez.history.logging.service.class</name> <value>org.apache.tez.dag.history.logging.proto.ProtoHistoryLoggingService</value></property></configuration>

然后分发至其他节点以及hive-conf路径下

#分发至其他节点的hadoop conf下ansible hadoopsrcclustero -m copy -a "src=/opt/apache_v00/hadoop-3.3.5/etc/hadoop/tez-site.xml dest=/opt/apache_v00/hadoop-3.3.5/etc/hadoop/"
#分发至其他节点的hive conf下ansible hadoopsrccluster -m copy -a "src=/opt/apache_v00/hadoop-3.3.5/etc/hadoop/tez-site.xml dest=/opt/apache_v00/apache-hive-3.1.3/conf"

这里需要重启hadoop集群才会生效,这个我们放在后面重启

4、hive-site.xml配置

/opt/apache_v00/apache-hive-3.1.3/conf/hive-site.xml

<configuration> <property>  <description>用于metastore的JDBC连接信息</description>  <name>javax.jdo.option.ConnectionURL</name>  <value>jdbc:mysql://192.168.242.230:3306/hive3?allowMultiQueries=true&amp;useSSL=false&amp;verifyServerCertificate=false</value> </property> <property>  <name>javax.jdo.option.ConnectionDriverName</name>  <value>com.mysql.jdbc.Driver</value> </property> <property>  <name>javax.jdo.option.ConnectionUserName</name>  <value>hive</value> </property> <property>  <name>javax.jdo.option.ConnectionPassword</name>  <value>123456</value> </property> <property> <description>仓库的默认数据库位置</description>  <name>hive.metastore.warehouse.dir</name>  <value>/user/hive/warehouse</value> </property> <property> <description>绑定要运行HiveServer2 Thrift服务的主机。</description>  <name>hive.server2.thrift.bind.host</name>  <value>apache230.hadoop.com</value> </property> <property> <description>是否应对metastore针对数据库通知相关API(如get_next_notification)执行授权。如果设置为true,则只有代理设置中的超级用户才拥有该权限</description>  <name>hive.metastore.event.db.notification.api.auth</name>  <value>false</value> </property> <property>  <description>远程metastore的Thrift URI。metastore客户端用于连接到远程metastore。</description>  <name>hive.metastore.uris</name>  <value>thrift://apache230.hadoop.com:9083,thrift://apache231.hadoop.com:9083</value> </property> <property> <description>需要指定 [tez, mr] 中的一种。选择执行引擎。可选项为:'tez'(Tez引擎,默认值),'mr'(MapReduce引擎,已弃用)。 MR是历史遗留引擎,在Hive 2系列中已被弃用,未来可能在没有进一步警告的情况下被移除。</description>  <name>hive.execution.engine</name>  <value>tez</value> </property> <!--strat hiveserver2高可用--><property><!--HiveServer2 是否支持客户端的动态服务发现。为支持此功能,当前每个 HiveServer2 实例在启动时都会使用 ZooKeeper 进行自我注册。JDBC/ODBC 客户端应在连接字符串中使用 ZooKeeper 集群:hive.zookeeper.quorum--> <name>hive.server2.support.dynamic.service.discovery</name> <value>true</value></property><property><!--在zk中的znode名称--> <name>hive.server2.zookeeper.namespace</name> <value>hiveserver2</value></property><property> <name>hive.zookeeper.quorum</name> <value>apache230.hadoop.com:2181,apache231.hadoop.com:2181,apache232.hadoop.com:2181</value></property><property> <name>hive.zookeeper.client.port</name> <value>2181</value></property><!--end hiveserver2高可用--></configuration>

分发至其他节点

#分发至其他节点的hive conf下ansible hadoopsrcclustero -m copy -a "src=/opt/apache_v00/apache-hive-3.1.3/conf/hive-site.xml dest=/opt/apache_v00/apache-hive-3.1.3/conf/"

此时修改其他两个节点绑定的hive.server2.thrift.bind.host 属性为各自主机名称

/opt/apache_v00/apache-hive-3.1.3/conf/hive-site.xml

5、配置hive环境变量

cat > /etc/profile.d/apache_v00.sh <<'EOF'export ZOOKEEPER_HOME=/opt/apache_v00/apache-zookeeper-3.9.2export HADOOP_HOME=/opt/apache_v00/hadoop-3.3.5export HIVE_HOME=/opt/apache_v00/apache-hive-3.1.3export TEZ_HOME=/opt/apache_v00/tez-0.10.3export PATH=$PATH:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HIVE_HOME/binEOFsource /etc/profile.d/apache_v00.sh

6、mysql库及权限准备

create database hive3;grant all privileges on  hive3.* to 'hive'@'%' identified by '123456';flush privileges;

7、执行初始化

schematool -initSchema -dbType mysql -verbose

当看到 schemaTool completed 即完成

8、core-site.xml配置

vim /opt/apache_v00/hadoop-3.3.5/etc/hadoop/core-site.xml 新增以下内容

<property><!-- 允许从任何主机来的代理请求 --> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property><!-- 允许root用户代理所有用户 --><property> <name>hadoop.proxyuser.root.users</name> <value>*</value> </property>

9、hadoop-env.sh设置

A. 分发并解压tez-0.10.2.tar.gz

ansible hadoopsrcclustero -m copy -a "src=/opt/softs/tez-0.10.2.tar.gz dest=/opt/softs/"ansible hadoopsrccluster -m shell -a "mkdir  /opt/apache_v00/tez-0.10.2"ansible hadoopsrccluster -m shell -a "tar -xf /opt/softs/tez-0.10.2.tar.gz -C /opt/apache_v00/tez-0.10.2"

注: hadoopsrcclustero 是ansible定义的主机列表名称,是其他节点,不包含当前机器,hadoopsrccluster 是包含当前机器 

B.设置hadoop-env.sh

/opt/apache_v00/hadoop-3.3.5/etc/hadoop/hadoop-env.sh 新增

export TEZ_CONF_DIR=$HADOOP_HOME/etc/hadoopexport TEZ_JARS=/opt/apache/tez-0.10.2export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:${TEZ_CONF_DIR}:${TEZ_JARS}/*:${TEZ_JARS}/lib/*

分发至其他两个节点

10、启动服务

重启hadoop服务sh /root/apachecluster/start_apachev00.sh
赋权权限hdfs dfs -chmod 777 /tmphdfs dfs -chmod 777 /user
#在apache230.hadoop.com节点执行(开两个创建,因为是前台执行)hive --service metastorehive --service hiveserver2
#在apache231.hadoop.com节点执行(同上)hive --service metastorehive --service hiveserver2
#在apache232.hadoop.com节点执行hive --service hiveserver2

这里的/root/apachecluster/start_apachev00.sh 脚本内容其实就是hadoop篇章的启停hadoop的命令

然后你可以验证hive功能了

连接方式你可以直接连接也可以走zk方式:

beeline -u "jdbc:hive2://apache230.hadoop.com:2181,apache231.hadoop.com:2181,apache232.hadoop.com:2181/default;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2"beeline -u "jdbc:hive2://apache230.hadoop.com:10000/default"

验证不同用户去执行需要加-n xxx,(因集群没有启动只发一下之前记录部署4.0.1的截图)

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐