【hive】CDH5.13的HiveMetaStore因Sentry同步导致的慢查询锁表问题

近期,我们公司HADOOP集群运行速度显著下降,具体表现为在Hive中提交查询语句后,响应延迟较长,且YARN集群资源并未充分利用,排除了资源瓶颈的可能性。
经过多方查阅资料,问题最终得到了解决,以下为详细记录。

问题现象:提交SQL语句后,第一阶段处理速度缓慢,有时甚至需等待数分钟。
第二阶段同样存在明显延迟。
同时,Hive日志中频繁出现与锁相关的错误,如“无锁”或“超时”等。

问题根源:在特定版本中,某些工作负载可能引发HiveMetastore(HMS)死锁。
系统虽具备自动恢复机制,但在高并发、写入密集型的工作负载下,HMS的恢复时间超过了查询作业的执行时间,进而导致HMS性能降低或停滞,进而影响HiveServer2 性能,最终影响查询效率。

解决方案: 1 . 升级至5 .1 3 .3 或更高版本,或升级至5 .1 4 .2 或更高版本。
2 . 若无法升级,可通过以下配置调整缓解问题:在Hive配置中,将“hive.metastore.transactional.event.listeners”设置为空值,将“hive.metastore.event.listeners”设置为“org.apache.hive.hcatalog.listener.DbNotificationListener”,并重启HMS服务使配置生效。
请注意,此方法可能导致某些DDL查询(如删除表并使用相同名称创建新表)失败,显示“无有效权限”错误。
重新运行这些查询后问题应可解决。
若问题依旧,请考虑升级至推荐的新版本。

更多详情请参考:https://docs.cloudera.com/documentation/enterprise/release-notes/topics/cdh_rn_hive_ki.
原文链接:https://juejin.cn/post/7 09 9 3 5 1 6 1 7 9 4 5 7 3 1 1 08

Hadoop3.3.5集成Hive4+Tez-0.10.2+iceberg踩坑过程

在整合Hadoop 3 .3 .5 、Hive 4 、Tez 0.1 0.2 和Iceberg 1 .3 的过程中,我们遭遇了一系列难题,但通过广泛搜集资料和反复测试,我们最终实现了这一集成。
以下是具体的集成步骤详解。
首先,我们必须确保Hadoop的版本是3 .3 .5 ,因为这是Hive运行的基础要求。
然后,我们将Tez部署为计算引擎。
考虑到Tez 0.1 0.2 的依赖是3 .3 .1 ,与我们的Hadoop版本不匹配,我们不得不手动编译Tez以防止在执行SELECT查询时出错。
在编译前,我们下载了官方发布的Tez源码(release-0.1 0.2 ),并解压以获取必要的编译文件。
在编译时,我们更新了pom.xml中的Hadoop版本号至3 .3 .5 ,设置了protoc.path指向解压后的protoc.exe路径,并加入了Maven仓库源。
我们只编译了tez-0.1 0.2 -minimal.tar.gz,以节省不必要的编译时间。
编译完成后,我们将文件上传到HDFS,并在主节点的hadoop配置目录中新增了tez-site.xml,之后将配置同步到所有节点并重启了集群。
Hive,作为Hadoop平台上的数据仓库工具,支持SQL查询和数据分析。
新版的Hive 4 已经集成了Iceberg 1 .3 ,无需额外配置。
集成步骤包括下载、解压、配置环境变量和初始化元数据。
我们下载了Hive 4 .0.0-beta-1 版本,解压并配置了环境变量,删除了特定的jar文件以消除错误提示。
我们修改了配置文件来设置Hive环境变量,并验证了连接信息的准确性。
初始化Hive元数据后,我们通过hive执行文件启动了Hive服务,并编写了hive_management.sh脚本来管理Hive服务。
使用beeline命令连接后,我们执行了创建数据库和表的SQL语句,并通过Hive执行数据插入和查询操作。
值得注意的是,Hive 4 .0.0-beta-1 已经内置了Iceberg 1 .3 ,因此无需额外加载jar包,只需将计算引擎设置为Tez。
如果需要升级Iceberg版本,我们需要下载Hive源码,调整依赖并编译特定的包。
为了创建Iceberg分区表,我们使用了Hive的命令语法,例如在创建分区表时使用STOREDBYICEBERG。
分区规范的语法与Spark相似,我们可以在HMS中查找Iceberg分区的详细信息,并执行相应的数据转换。
提供的参考文档详细介绍了从安装到配置的整个过程,确保了集成过程的顺利进行。

apache atlas独立部署(hadoop、hive、kafka、hbase、solr、zookeeper)

ApacheAtlas独立部署全攻略,先来搞定基础环境:Java1 .8 得有,Hadoop2 .7 .4 也得装上,还得备好JDBC驱动。
Zookeeper也别忘了装好,Atlas要用它来整合HBase和Solr。

接下来是Hadoop的安装步骤:先把主机名设为master,防火墙关了,免密码登录配好。
Hadoop2 .7 .4 解压安装,JDK也装上并配置好。
Hadoop的环境得配对,核心配置、HDFS配置都得整好。
HDFS格式化一下,环境变量也设好。
SSH密钥生成,免密码登录配置好。
最后启动Hadoop服务,NameNode、DataNode这些都得启动起来。

然后是Hive的安装:Hive安装包解压,环境变量配置,版本也验证一下。
MySQL驱动复制到hive/lib目录下。
MySQL里建个数据库,Hive的初始化脚本得执行。
Hive命令执行一下,看是否安装成功。

Kafka伪分布式安装:Kafka服务装上并启动,用kafkaconsoleproducer.sh和kafkaconsoleconsumer.sh测试一下Kafka。
需要的话,多个Kafkaserver属性文件也配置好。

HBase的安装与配置:HBase安装包解压,环境变量配置。
HBase配置文件,比如hbasesite.xml,得改一下,确保跟Zookeeper集成好。
HBase服务启动,管理界面访问一下,看是否安装成功。

Solr集群安装:Solr安装包解压,Solr服务启动并测试一下。
ZooKeeper与SOLR_PORT配置好,确保Solr集群正常工作。
Solrcollection创建一下,用来存元数据。

最后是ApacheAtlas独立部署:ApacheAtlas源码编译,选独立部署版本。
配置文件里指定不使用内置的HBase和Solr。
编译好的Atlas跟已安装的Solr集成。
Atlas配置文件也改一下,指向正确的存储位置,比如HBase和Solr。

问题解决部分:确保HBase配置文件位置对,Atlas能正确访问。
启动时JanusGraph和HBase的异常得解决,确保Atlas能正常启动。
Solr集群配置也得对,确保Atlas能正常跟Solr通信。

部署完,ApacheAtlas就作为独立服务运行了,跟Hadoop、Hive、Kafka、HBase、Solr和Zookeeper这些整合好,提供全面的数据湖和元数据管理功能。

Hive安装教程

关于Hive的安装,这里有一个详细的指南:
首先,你需要创建一个Hive数据库。
你可以通过命令行使用mysql命令来登录到你的MySQL服务。
登录后,输入root用户的密码。
在MySQL的命令行界面中,使用create database语句来创建一个名为hive的数据库,并设置字符集为utf8 mb4
接下来是Hive的安装步骤:
1 . 解压Hive安装包:将下载的Hive安装包解压到你选择的目录,比如/usr。

2 . 重命名安装目录:将解压后的目录重命名为hive。

然后,你需要进行一些配置:
1 . 设置环境变量:编辑/etc/profile文件,添加Hive的环境变量,比如export HIVE_HOME=/usr/hive和export PATH=$PATH:$HIVE_HOME/bin。
保存文件后,运行source /etc/profile来使环境变量生效。

2 . 配置Hive文件:将Hive的配置文件模板复制到$HIVE_HOME/conf目录,并重命名为hivesite.xml。
根据你的实际情况修改这个文件。
同样地,将hiveenv.sh.template复制到$HIVE_HOME/conf目录,并重命名为hiveenv.sh,进行必要的配置,比如设置HADOOP_HOME和JAVA_HOME等。

3 . 复制MySQL驱动:将MySQL的驱动文件复制到$HIVE_HOME/lib目录。

4 . 设置文件权限:确保Hadoop用户有权限访问Hive的相关文件。

5 . 初始化Hive元数据库:运行schematool init SchemaDB Type mysql命令来初始化Hive的元数据库。

6 . 解决版本冲突:检查并解决可能出现的guava相关错误,比如版本冲突。

最后,启动Hive:
1 . 切换到hadoop用户:使用suhadoop命令。

2 . 启动Hive:运行hive命令。

3 . 验证启动:通过Hive命令行查看数据库和元数据表等,确保Hive已经成功启动。

如果在安装和启动过程中遇到任何问题,比如连接问题、权限设置错误或其他特定错误,你可以参考上述步骤进行相应的调整。
此外,检查日志文件可以帮助你更快地定位和解决问题。

macbook安装大数据组件(hadoop, hive, hbase, spark, kettle)

在MacBook上搭建大数据环境,可以遵循以下流程:
首先,为了确保后续YARN服务的顺利启动,我们需要先安装Java 8 ,因为YARN对Java环境有一定的依赖,而Java版本的准确性直接关系到整个系统的稳定性。

接下来,我们可以利用Homebrew这个macOS下的包管理工具来安装一些基础的环境依赖,Homebrew能极大地简化软件的安装和管理过程。

安装并配置Hadoop与YARN是接下来的步骤。
在这个过程中,我们需要修改主机名,并配置SSH以实现localhost的连通。
同时,对hadoopenv.sh、coresite.xml、hdfssite.xml、mapredsite.xml等配置文件进行适当修改,保证Hadoop能够正常启动,并在通过Web界面浏览文件系统时不会出现任何问题。
之后,通过执行$hdfsnamenodeformat命令来格式化HDFS,从而初始化文件系统。
最后,启动Hadoop与YARN服务,并确保后台程序正常运行。

随后,我们需要安装并配置MySQL数据库。
首先,使用Homebrew来安装MySQL,然后设置环境变量以确保系统能够识别MySQL。
通过mysql.serverstart命令来启动MySQL服务,并运行安全安装脚本,包括设置root密码和移除匿名账户等,以保障数据库的安全。
此外,安装MySQLWorkbench作为数据库管理工具。

在安装并配置Hive时,同样使用Homebrew进行安装,并配置环境变量以便调用Hive。
需要注意解决版本不兼容的问题,比如guava版本的冲突,确保Hive与Hadoop的guava版本保持一致。
同时,配置MySQL数据库连接,创建数据库,并修改hivesite.xml文件以实现与MySQL的连接。
最后,执行schematoolinitSchemadbTypemysql等初始化脚本。

安装并配置HBase的步骤与Hive类似,使用Homebrew安装HBase,修改配置文件以匹配Hadoop和HBase的版本,然后配置并启动HBase服务。

对于Spark的安装和配置,我们同样使用Homebrew来安装Scala与Spark,并配置Scala环境变量。
通过SparkShell来验证安装是否成功。

最后,我们需要安装并配置Kettle。
首先尝试使用Homebrew安装Kettle,如果失败,则从社区站点下载安装文件。
接下来,配置与Hadoop的集成,建立MySQL到HDFS的数据转换流程,并运行转换测试以确保数据正确转换。
同时,解决可能出现的驱动错误,并调整配置文件以确保转换流程的顺利进行。

完成以上步骤后,所有组件应该已经成功安装并配置,为大数据处理打下了坚实的基础。
在实际使用过程中,可能会遇到一些特定的环境兼容性问题或配置细节问题,建议查阅相应组件的官方文档进行进一步的调试。