如何部署Oracle Linux 10.x Apache Hive Metastore Server?
- By : Will
- Category : 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的安装部署
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 准备数据库环境
数据库环境准备就绪后,你需要执行如下命令准备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&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
没有评论