打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Hive On LLAP搭建&常见问题

Hive On LLAP搭建&常见问题

基本概述

Hive在2.0之后,推出一个新特性LLAP(Live Long And Process),可以显著提高查询效率。

LLAP是一个常驻于Yarn的进程,并不是一个执行引擎,它将DataNode数据预先缓存到内存中,然后交由DAG引擎进行查询、处理任务使用。部分查询、权限控制将由LLAP执行,短查询任务的结果会很快的返回。

相对于Hive 1.x,提升大约25倍的性能。

安装准备

Apache Slider安装

LLAP需要常驻于Yarn之上,所以需要提前安装Apache Slider。当然,在Hadoop 3.x中,Yarn已经支持常驻任务的运行,就不需要对Apache Slider进行安装了。

首先下载Slider,如果网速较慢,可以先从Github中下载zip包,再上传到服务器进行解压。

git clone https://github.com/apache/incubator-retired-slider/tree/branches/branch-0.90.2

这里将slider安装包放置到/opt/frames/目录下,然后对安装包进行解压。

因为编译过程需要maven,所以使用脚本对maven进行安装。

# 进入自动化脚本安装目录cd /home/hadoop/automaticDeploy/# 编辑frames.txt,添加maven配置apache-maven-3.6.3-bin.tar.gz true# 使用脚本安装maven./systems/configureMaven.sh # 初始化环境变量source /etc/profile# 查看是否安装成功mvn --version

进入到Slider源码目录下,进行编译。

# 进入slider源码目录cd apache-slider-0.90.2-incubating/# 进行编译mvn clean site:site site:stage package -DskipTests

解压编译后的文件。

mkdir /opt/app/slider/tar -zxvf slider-assembly/target/slider-0.90.2-incubating-all.tar.gz -C /opt/app/slider/

编辑conf/slider-env,添加环境变量。

# 进入slider安装目录cd /opt/app/slider/slider-0.90.2-incubating# 编辑conf/slider-env,添加以下内容export JAVA_HOME=${JAVA_HOME}export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop/

编辑conf/slider-client.xml,指定Zookeeper地址,Zookeeper稍后使用脚本进行安装,这里提前规定它安装到node01、node02、node03节点。

<property><name>hadoop.registry.zk.quorum</name><value>node01:2181,node02:2181,node03:2181</value></property>

将Slider添加到PATH环境变量中。

vim /etc/profile# 配置环境变量export SLIDER_HOME=/opt/app/slider/slider-0.90.2-incubatingexport PATH=$PATH:$SLIDER_HOME/bin# 配置完成后,初始化环境变量source /etc/profile

查看是否配置成功。

slider version

Zookeeper安装

因为Slider依赖Zookeeper,所以需要在各个节点提前进行安装。这里直接使用脚本来完成。

首先进入脚本目录,分别在node01、node02、node03中编辑frames.txt配置文件,添加zookeeper的安装信息。

cd /home/hadoop/automaticDeploy/vim frames.txt# 添加如下信息zookeeper-3.4.10.tar.gz true node01,node02,node03

然后将zookeeper-3.4.10.tar.gz安装包上传到各节点的/opt/frames目录下,如果使用frames.zip包,则安装包已经在对应目录中。这里也可以安装其它版本,自行更改配置即可。

在node01、node02、node03上调用脚本进行一键安装。

/home/hadoop/automaticDeploy/hadoop/installZookeeper.sh

然后初始化环境变量即可。

source /etc/profile

因为启动时需要在各个节点执行启动命令,为了方便起见,使用脚本安装Zookeeper后,启动命令已经被封装为脚本zookeeper.sh,在任意一台节点执行便可以一键完成Zookeeper集群的启停:

# 在任意一台节点执行即可zookeeper.sh start

环境搭建

首先编辑hive-site.xml,配置LLAP,这里hive.llap.daemon.service.hosts配置为运行在yarn上的LLAP服务名,这里可以自定义设置,但要与下一步中使用hive命令生成的LLAP环境包中的服务名一致。

<property>  <name>hive.zookeeper.quorum</name>  <value>node01:2181,node02:2181,node03:2181</value></property>  <property> <name>hive.execution.mode</name> <value>llap</value></property><property> <name>hive.llap.execution.mode</name> <value>all</value></property><property> <name>hive.llap.daemon.service.hosts</name> <value>@llap_server</value></property>

然后,使用Hive命令生成LLAP环境包,它包含LLAP运行所需依赖、LLAP启动脚本。其中–name参数指定的便是LLAP服务名。

# 使用命令生成的llap环境包会存放在当前目录中# 所以提前进入/opt/app目录,避免llap环境包生成到其它目录cd /opt/app# instances指定节点数量;executors指定每个节点执行器数量# iothread指定实例的IO线程数# size指定container内存大小# xmx指定container JVM堆大小hive --service llap --name llap_server  --instances 2 --cache 512m --executors 2 --iothreads 2 --size 1024m --xmx 512m --loglevel INFO --args "-XX: UseG1GC -XX: ResizeTLAB -XX: UseNUMA -XX:-ResizePLAB -XX:MaxGCPauseMillis=200" --javaHome $JAVA_HOME

在运行前,需要在各个节点确认关闭python的ssl功能,避免因为在集群中进行https校验,而导致llap从节点无法向主节点汇报心跳而关闭。

vim /etc/python/cert-verification.cfg # 确保以下参数为disable[https]verify=disable

然后,因为llap使用的执行引擎为tez,而当前安装的tez-0.9.1版本自带的hadoop依赖为2.7.0,集群hadoop版本为2.7.7,所以在执行SQL时会抛出异常:

org.apache.hadoop.tracing.SpanReceiverHost.getInstance(Lorg/apache/hadoop/conf/Configuration;)Lorg/apache/hadoop/tracing/SpanReceiverHost;

这是因为hadoop 2.7.3中更改了SpanReceiverHost.getInstance方法而导致的,所以,需要替换掉llap中的tez依赖(如果使用更高版本的tez,则不需要进行替换):

# 进入生成的llap目录中,这里以llap-slider-20Jan2021为例cd llap-slider-20Jan2021/# 解压llap依赖包unzip llap-20Jan2021.zip -d unzippedcd unzipped/package/filestar -zxvf llap-20Jan2021.tar.gz# 替换Hadoop Jar包cd lib/tezcp ../hadoop-common-2.7.7.jar ./cp /opt/app/hadoop-2.7.7/share/hadoop/common/lib/hadoop-annotations-2.7.7.jar ./cp /opt/app/hadoop-2.7.7/share/hadoop/common/lib/hadoop-auth-2.7.7.jar ./cp /opt/app/hadoop-2.7.7/share/hadoop/hdfs/hadoop-hdfs-2.7.7.jar ./cp /opt/app/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-client-common-2.7.7.jar ./cp /opt/app/hadoop-2.7.7/share/hadoop/yarn/hadoop-yarn-api-2.7.7.jar ./rm -rf hadoop-common-2.7.0.jar hadoop-annotations-2.7.0.jar hadoop-auth-2.7.0.jar hadoop-hdfs-2.7.0.jar hadoop-mapreduce-client-common-2.7.0.jar hadoop-yarn-api-2.7.0.jar # 返回到llap-slider-20Jan2021/unzipped/package/files目录cd ../../# 删除旧的压缩包rm -rf llap-20Jan2021.tar.gz # 重新打包tar -zcvf llap-20Jan2021.tar.gz *# 删除旧的文件rm -rf bin conf config.json lib# 返回到llap-slider-20Jan2021/unzipped目录cd ../../# 将unzipped文件重新打包zip -r llap-20Jan2021.zip *# 拷贝到原目录中覆盖旧的zip包rm -rf ../llap-20Jan2021.zipcp llap-20Jan2021.zip ../# 回到llap-slider-20Jan2021目录,删除unzipped目录rm -rf unzipped/

在启动LLAP前,保证zookeeper已经启动,否则会报错:

2021-01-21 07:08:36,668 [main-SendThread(node02:2181)] WARN  zookeeper.ClientCnxn - Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnectException in thread Thread-2:Traceback (most recent call last):  File "/usr/lib64/python2.7/threading.py", line 811, in __bootstrap_inner    self.run()  File "/usr/lib64/python2.7/threading.py", line 764, in run    self.__target(*self.__args, **self.__kwargs)  File "/opt/app/slider/slider-0.90.2-incubating/bin/slider.py", line 172, in print_output    (line, done) = read(src, line)  File "/opt/app/slider/slider-0.90.2-incubating/bin/slider.py", line 149, in read    o = c.decode('utf-8')  File "/usr/lib64/python2.7/encodings/utf_8.py", line 16, in decode    return codecs.utf_8_decode(input, errors, True)UnicodeDecodeError: 'utf8' codec can't decode byte 0xe6 in position 0: unexpected end of data

最后,进入到生成的llap目录中,执行run.sh。

# 这里,生成的llap目录为llap-slider-20Jan2021cd llap-slider-20Jan2021/./run.sh

llap运行后,可以在yarn监控节点看到运行的task进程。

在各个节点上使用 jps 命令进行查看,可以找到SliderApplicationMaster进程,还有两个LlapDaemon守护进程,说明已经成功运行。

可以使用命令停止llap。

slider stop llap_server

也可以使用hive命令查看llap状态。

hive --service llapstatus --name llap_server

最后,创建表,并插入数据,看是否执行成功。

create table llap_test (id int ,name string);insert into llap_test values(1, 'zs');

后话

至此,LLAP已经搭建完成,如果有帮助的,记得点赞、关注。在公众号《数舟》中,回复【10124】获取当前PDF版手册,也可以免费获取专栏《数据仓库》配套的视频课程、大数据集群自动安装脚本,并获取进群交流的途径。

我所有的大数据技术内容也会优先发布到公众号中。如果对某些大数据技术有兴趣,但没有充足的时间,在群里提出,我为大家安排分享。

公众号自取:

来源:https://www.icode9.com/content-4-832551.html

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Hadoop Hive与Hbase整合+thrift
Hive_HBase_整合
大数据数据库之HBase1.2.6
大数据工具篇之Hive与HBase整合完整教程
hive安装
Impala vs Hive – Difference Between Hive and Impala
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服