如何部署Oracle Linux 10.x Apache Hive Metastore Server?

Apache-Hadoop

1 基础知识

1.2 角色介绍

– Hive表和分区的元数据通过Hive Metastore访问
– Hive的元数据使用JPOX ORM解决方案(Data Nucleus)进行持久化,因此任何首期支持的数据库都可以被Hive使用
– 大多数商业关系型数据库和许多开源数据库都受支持
需要注意的是,详细请参阅数据库支持列表,
https://cwiki.apache.org/confluence/display/Hive/AdminManual+Metastore+Administration#AdminManualMetastoreAdministration-SupportedBackendDatabasesforMetastore

1.2 支持的元数据库

– 本地/嵌入式元数据存储数据库(derby)
– 远程元数据存储数据库

2 最佳实践

2.1 准备环境

2.1.1 完成Hive的安装部署

如何部署Oracle Linux 10.x Apache Hive CLI和Beeline CLI?


Hive环境准备就绪后,你需要执行如下命令准备连接MySQL所需的数据库驱动,

cd ~
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.49/mysql-connector-java-5.1.49.jar
mv mysql-connector-java-5.1.49.jar /usr/apache-hive-1.1.0-bin/lib/

2.1.2 准备数据库环境

如何部署Docker MySQL 8.0?


数据库环境准备就绪后,你需要执行如下命令准备hive所需的数据库,

mysql -uroot -p'******' -h hd03.cmdschool.org
create user 'hive'@'%' identified by 'hivepwd';
grant all privileges on metastore.* to 'hive'@'%';
flush privileges;

2.2 配置Hive Metastore服务

2.2.1 定义服务主配置

cp /etc/hive/hive-site.xml /etc/hive/hive-site.xml.save
vim /etc/hive/hive-site.xml

修改如下参数,

  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://hd03.cmdschool.org:3306/metastore?createDatabaseIfNotExist=true&amp;useSSL=false</value>
    <description>JDBC connect string for a JDBC metastore</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>Username to use against metastore database</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hivepwd</value>
    <description>password to use against metastore database</description>
  </property>

2.2.2 定义服务日志配置

cp /etc/hive/hive-log4j.properties.template /etc/hive/hive-log4j.properties
vim /etc/hive/hive-log4j.properties

修改如下参数,

hive.log.dir=/var/log/hive

2.2.3 测试服务启动

su - hive -s /bin/bash -c 'source /etc/profile.d/hadoop.sh;/usr/apache-hive-1.1.0-bin/bin/hive --service metastore -p 9083'

正常情况下,你可以看到如下启动信息,

Starting Hive Metastore Server
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/hadoop-2.6.0/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/apache-hive-1.1.0-bin/lib/hive-jdbc-1.1.0-standalone.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

然后,你可以使用如下命令查看启动的进程,

pgrep -u hive java -a

可见如下显示,

697898 /usr/java/jdk1.8.0_121/bin/java -Xmx256m -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/var/log/hadoop-hdfs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/usr/hadoop-2.6.0 -Dhadoop.id.str=hive -Dhadoop.root.logger=INFO,console -Djava.library.path=/usr/hadoop-2.6.0/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Xmx512m -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.util.RunJar /usr/apache-hive-1.1.0-bin/lib/hive-service-1.1.0.jar org.apache.hadoop.hive.metastore.HiveMetaStore -p 9083

然后,你可以使用如下命令查看倾听的端口,

ss -antp | grep -f<(pgrep -u hive java)

可见如下显示,

LISTEN     0      50                    0.0.0.0:9083                 0.0.0.0:*     users:(("java",pid=697898,fd=309))                                       
CLOSE-WAIT 1      0               10.168.0.210:49928          10.168.0.213:3306  users:(("java",pid=697898,fd=312))                                       
CLOSE-WAIT 1      0               10.168.0.210:49906          10.168.0.213:3306  users:(("java",pid=697898,fd=311))                                       
CLOSE-WAIT 1      0               10.168.0.210:49942          10.168.0.213:3306  users:(("java",pid=697898,fd=313))                                       
CLOSE-WAIT 1      0               10.168.0.210:49892          10.168.0.213:3306  users:(("java",pid=697898,fd=310))  

2.2.4 创建服务控制

vim /usr/lib/systemd/system/hive-metastore.service

加入如下配置,

[Unit]
Description=Apache Hive Metastore
Wants=network.target
Before=network.target
After=network-pre.target
Documentation=https://cwiki.apache.org/confluence/display/Hive/

[Service]
Type=simple
User=hive
Group=hive

Environment="JAVA_HOME=/usr/java/jdk1.8.0_121"

ExecStartPre=+/bin/sh -c 'mkdir -p /var/log/hive;chown hive:hive /var/log/hive;chmod 775 /var/log/hive'
ExecStart=/bin/sh -c 'source /etc/profile.d/hadoop.sh;/usr/apache-hive-1.1.0-bin/bin/hive --service metastore -p 9083'
ExecStop=/usr/bin/kill -SIGINT $MAINPID
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

服务创建后,你需要执行如下命令重载服务使配置生效,

systemctl daemon-reload

然后,你需要执行如下命令启动或设置服务自启动或查看服务状态,

systemctl start hive-metastore
systemctl enable hive-metastore
systemctl status hive-metastore

如果启动异常,你可以使用如下命令查看日志,

journalctl -u hive-metastore -f

参阅文档
===========
https://cwiki.apache.org/confluence/display/Hive/AdminManual+Metastore+Administration

没有评论

发表回复

Apache-Hadoop
如何部署Oracle Linux 10.x Apache Hive CLI和Beeline CLI?

1 基础知识 1.1 软件简介 – Apache Hive数据仓库软件支持对分布式存储中 …

Apache-Hadoop
如何解决cmak添加集群报错?

1 前言 一个问题,一篇文章,一出故事。 今天在cmak中添加集群(Add Cluster)出现如下 …

Apache-Hadoop
如何部署Oracle Linux 10.x CMAK?

1 基础知识 如何二进制部署CMAK? 2 最佳实践 2.1 软件环境 2.1.1 Kafka集群环 …