大数据集群安装(四)Hive Apache集群安装部署 详细 启动HiveServer2

本次测试3台集群(node1(192.168.1.2),node2(192.168.1.4),node3(192.168.1.6)),所有的主服务都安装在node1节点,操作系统为CentOS7.6

1.环境准备

参考博客:https://blog.csdn.net/qq_35260875/article/details/111315110

2.安装Zookeeper

参考博客:https://blog.csdn.net/qq_35260875/article/details/111322620

3.安装Hadoop

参考博客:https://blog.csdn.net/qq_35260875/article/details/111615555

4.安装数据库

Hive作为Hadoop的数据仓库,他需要将元数据保存在数据库中,所以就需要先安装数据库。常见的数据库有MySQL、PostgreSQL、MariaDB等。本次安装MariaDB

扫描二维码关注公众号,回复: 12733416 查看本文章

(1)安装MariaDB

在node1节点上安装,本次使用yum进行安装

# yum安装MariaDB

yum install mariadb* -y

安装信息:

Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
Package 1:mariadb-server-5.5.60-1.el7_5.aarch64 already installed and latest version
Package 1:mariadb-5.5.60-1.el7_5.aarch64 already installed and latest version
Package 1:mariadb-libs-5.5.60-1.el7_5.aarch64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package mariadb-bench.aarch64 1:5.5.60-1.el7_5 will be installed
--> Processing Dependency: perl(GD) for package: 1:mariadb-bench-5.5.60-1.el7_5.aarch64
---> Package mariadb-devel.aarch64 1:5.5.60-1.el7_5 will be installed
---> Package mariadb-embedded.aarch64 1:5.5.60-1.el7_5 will be installed
---> Package mariadb-embedded-devel.aarch64 1:5.5.60-1.el7_5 will be installed
---> Package mariadb-test.aarch64 1:5.5.60-1.el7_5 will be installed
--> Running transaction check
---> Package perl-GD.aarch64 0:2.49-3.el7 will be installed
--> Processing Dependency: gd >= 2.0.28 for package: perl-GD-2.49-3.el7.aarch64
--> Processing Dependency: libgd.so.2()(64bit) for package: perl-GD-2.49-3.el7.aarch64
--> Processing Dependency: libXpm.so.4()(64bit) for package: perl-GD-2.49-3.el7.aarch64
--> Running transaction check
---> Package gd.aarch64 0:2.0.35-26.el7 will be installed
---> Package libXpm.aarch64 0:3.5.12-1.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==================================================================================================================================================================================================================
Package Arch Version Repository Size
==================================================================================================================================================================================================================
Installing:
mariadb-bench aarch64 1:5.5.60-1.el7_5 Local 388 k
mariadb-devel aarch64 1:5.5.60-1.el7_5 Local 754 k
mariadb-embedded aarch64 1:5.5.60-1.el7_5 Local 3.3 M
mariadb-embedded-devel aarch64 1:5.5.60-1.el7_5 Local 6.9 M
mariadb-test aarch64 1:5.5.60-1.el7_5 Local 8.1 M
Installing for dependencies:
gd aarch64 2.0.35-26.el7 Local 140 k
libXpm aarch64 3.5.12-1.el7 Local 53 k
perl-GD aarch64 2.49-3.el7 Local 170 k

Transaction Summary
==================================================================================================================================================================================================================
Install 5 Packages (+3 Dependent packages)

Total download size: 20 M
Installed size: 172 M
Downloading packages:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 116 MB/s | 20 MB 00:00:00 
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows:
git-2.21.0-1.el7.aarch64 is a duplicate with git-1.8.3.1-19.el7.aarch64
Installing : libXpm-3.5.12-1.el7.aarch64 1/8 
Installing : gd-2.0.35-26.el7.aarch64 2/8 
Installing : perl-GD-2.49-3.el7.aarch64 3/8 
Installing : 1:mariadb-devel-5.5.60-1.el7_5.aarch64 4/8 
Installing : 1:mariadb-embedded-5.5.60-1.el7_5.aarch64 5/8 
Installing : 1:mariadb-embedded-devel-5.5.60-1.el7_5.aarch64 6/8 
Installing : 1:mariadb-bench-5.5.60-1.el7_5.aarch64 7/8 
Installing : 1:mariadb-test-5.5.60-1.el7_5.aarch64 8/8 
Verifying : 1:mariadb-test-5.5.60-1.el7_5.aarch64 1/8 
Verifying : 1:mariadb-embedded-5.5.60-1.el7_5.aarch64 2/8 
Verifying : 1:mariadb-devel-5.5.60-1.el7_5.aarch64 3/8 
Verifying : perl-GD-2.49-3.el7.aarch64 4/8 
Verifying : libXpm-3.5.12-1.el7.aarch64 5/8 
Verifying : 1:mariadb-bench-5.5.60-1.el7_5.aarch64 6/8 
Verifying : gd-2.0.35-26.el7.aarch64 7/8 
Verifying : 1:mariadb-embedded-devel-5.5.60-1.el7_5.aarch64 8/8 

Installed:
mariadb-bench.aarch64 1:5.5.60-1.el7_5 mariadb-devel.aarch64 1:5.5.60-1.el7_5 mariadb-embedded.aarch64 1:5.5.60-1.el7_5 mariadb-embedded-devel.aarch64 1:5.5.60-1.el7_5 mariadb-test.aarch64 1:5.5.60-1.el7_5

Dependency Installed:
gd.aarch64 0:2.0.35-26.el7 libXpm.aarch64 0:3.5.12-1.el7 perl-GD.aarch64 0:2.49-3.el7 

Complete!

# 启动MariaDB

systemctl start mariadb.service

# 设置开机自启

systemctl enable mariadb.service

# 查看MariaDB状态

systemctl status mariadb.service
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2021-01-11 10:59:41 CST; 5 days ago
Main PID: 9805 (mysqld_safe)
CGroup: /system.slice/mariadb.service
├─ 9805 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
└─10002 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/...

Jan 11 10:59:37 node1 systemd[1]: Starting MariaDB database server...
Jan 11 10:59:37 node1 mariadb-prepare-db-dir[9506]: Database MariaDB is probably initialized in /var/lib/mysql already, nothing is done.
Jan 11 10:59:37 node1 mysqld_safe[9805]: 210111 10:59:37 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
Jan 11 10:59:37 node1 mysqld_safe[9805]: 210111 10:59:37 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Jan 11 10:59:41 node1 systemd[1]: Started MariaDB database server.
You have new mail in /var/spool/mail/root

(2)设置自定义密码

在node1节点上执行

# 登录mariadb,敲两次回车,默认第一次登录没有密码

mysql -uroot -p

# 设置自定义密码

set password = password('123456');

# 为root用户赋权

grant all on *.* to root@'node1' identified by 'root';

# 刷新,必须执行,否则不生效

flush privileges;

(3)设置utf-8字符编码

vim /etc/my.cnf

# 在[mysqld]标签下添加以下内容

init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
vim /etc/my.cnf.d/client.cnf


# 在[client]标签下添加以下内容

default-character-set=utf8
vim /etc/my.cnf.d/mysql-clients.cnf

# 在[mysql]标签下添加以下内容

default-character-set=utf8

# 重启MariaDB

systemctl restart mariadb.service

5.下载Hive

(1)下载

下载地址:https://archive.apache.org/dist/hive/hive-3.1.0/

选择需要的apache版本进行下载,本次测试使用3.1.0的版本

名字:apache-hive-3.1.0-bin.tar.gz

(2)解压

将下载的压缩包通过FTP工具上传,放置于node1节点的/usr/local目录下 

mv apache-hive-3.1.0-bin.tar.gz /usr/local
cd /usr/local
tar -zxvf apache-hive-3.1.0-bin.tar.gz

(3)建立软链接,便于后期版本更换

ln -s apache-hive-3.1.0-bin hive

(4)删除安装包

rm -rf apache-hive-3.1.0-bin.tar.gz

(5)下载jdbc包

在node1节点下修改

# 进入配置目录

yum install mysql-connector-java.noarch -y

# 下载的jdbc包默认目录在/usr/share/java

# 将其拷贝到hive的lib目录下

cp /usr/share/java/mysql-connector-java.jar /usr/local/hive/lib

6.修改配置文件

在node1节点下修改

# 进入配置目录

cd /usr/local/hive/conf

(1)修改hive-env.sh

在node1节点下修改hive-env.sh

# 文件拷贝

cp hive-env.sh.template hive-env.sh

# 修改hive-env.sh,在最后面添加

vim hive-env.sh
export JAVA_HOME=/usr/local/jdk8u222-b10
export HADOOP_HOME=/usr/local/hadoop
export HIVE_CONF_DIR=/usr/local/hive/conf

(2)修改hive-site.xml

在node1节点下修改hive-site.xml

# 文件拷贝

cp hive-default.xml.template hive-site.xml

# 修改hive-site.xml

vim hive-site.xml

注意:先修改for&#?找到相应行将其替换成for后再将下列值替换

# 找到以下的name,然后再修改成自定义的

<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node1/hive?createDatabaseIfNotExist=true</value>

<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>

<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>

<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>

<name>hive.exec.local.scratchdir</name>
<value>/tmp/hive</value>

<name>hive.downloaded.resources.dir</name>
<value>/tmp/${hive.session.id}_resources</value>

<name>hive.querylog.location</name>
<value>/tmp/hive</value>

<name>hive.server2.logging.operation.log.location</name>
<value>/tmp/hive/operation_logs</value>

<name>hive.zookeeper.quorum</name>
<value>node1:2181,node2:2181,node3:2181</value>

(3)拷贝hadoop的文件

在node1节点下执行

cp /usr/local/hadoop/etc/hadoop/hdfs-site.xml /usr/local/hive/conf
cp /usr/local/hadoop/etc/hadoop/core-site.xml /usr/local/hive/conf

7.在HDFS上创建目录

hdfs dfs -mkdir /tmp
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -chmod 777 /tmp
hdfs dfs -chmod g+w /user/hive/warehouse

8.配置环境变量

在三个节点下执行以下命令

vim /etc/profile
export HIVE_HOME=/usr/local/hive
export PATH=$HIVE_HOME/bin:$PATH

# 环境变量生效

source /etc/profile

9.初始化和启动Hive

在node1节点下执行以下命令

# 初始化Hive

schematool -dbType mysql -initSchema -verbose

# 启动hive metastore

hive --service metastore -p 9083 &

# 启动Hive

/usr/local/hive/bin/hive

打印的信息:

which: no hbase in (/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/hive/bin:/usr/local/zookeeper/bin:/usr/local/jdk8u222-b10/bin:/usr/local/python3/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/hive/bin:/usr/local/zookeeper/bin:/usr/local/jdk8u222-b10/bin:/usr/local/python3/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/zookeeper/bin:/usr/local/jdk8u222-b10/bin:/usr/local/python3/bin:/usr/local/jdk8u222-b10/bin:/usr/local/python3/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/apache-hive-3.1.0-bin/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop-3.1.1/share/hadoop/common/lib/slf4j-log4j12-1.7.25.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.apache.logging.slf4j.Log4jLoggerFactory]
Hive Session ID = 58fdfa9e-2b37-4fcd-a6be-ea1e6c0e374a

Logging initialized using configuration in jar:file:/usr/local/apache-hive-3.1.0-bin/lib/hive-common-3.1.0.jar!/hive-log4j2.properties Async: true
Hive Session ID = b166f90c-a0fc-4a33-9da7-8676adebbab1
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.

# 验证功能

show databases;

信息:

OK
default
Time taken: 1.409 seconds, Fetched: 1 row(s)

10.启动hiveserver2

(1)修改hadoop的配置文件

在node1下执行以下命令

cd  /usr/local/hive/conf

# 修改hdfs-site.xml,新增下面参数

vim hdfs-site.xml
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>

# 修改core-site.xml,新增下面参数

vim core-site.xml
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>

# 将配置文件拷贝到其他节点的目录下,并重启hadoop

(2)启动

在node1下启动 hiveserver2

#创建日志目录

mkdir -p /usr/local/hive/log/
touch /usr/local/hive/log/hiveserver.log
touch /usr/local/hive/log/hiveserver.err

# 启动命令

nohup hiveserver2 1>/usr/local/hive/log/hiveserver.log 2>/usr/local/hive/log/hiveserver.err &

# 启动的时间比较久,需要等待几分钟

tail -f /usr/local/hive/log/hiveserver.err
nohup: ignoring input
which: no hbase in (/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/hive/bin:/usr/local/zookeeper/bin:/usr/local/jdk8u222-b10/bin:/usr/local/python3/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/hive/bin:/usr/local/zookeeper/bin:/usr/local/jdk8u222-b10/bin:/usr/local/python3/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/zookeeper/bin:/usr/local/jdk8u222-b10/bin:/usr/local/python3/bin:/usr/local/jdk8u222-b10/bin:/usr/local/python3/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
2021-01-18 11:32:22: Starting HiveServer2
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/apache-hive-3.1.0-bin/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop-3.1.1/share/hadoop/common/lib/slf4j-log4j12-1.7.25.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.apache.logging.slf4j.Log4jLoggerFactory]
Hive Session ID = 824030a3-2afe-488c-a2fa-7d98cfc8f7bd
Hive Session ID = 1031e326-2088-4025-b2e2-c9bb1e81b03d
Hive Session ID = 32203873-49ad-44b7-987c-da1aae8b3375
Hive Session ID = d7be9389-11c6-46cb-90d6-a91a2d5199b8
OK

# 使用jps命令查看

jps

27874 QuorumPeerMain
28008 NameNode
15817 RunJar
16091 Jps
28143 ResourceManager

# 使用netstat命令查看

netstat -anp|grep 10000

# 看到这样就是起来了

tcp6 0 0 :::10000 :::* LISTEN 27800/java

(3)使用beeline连接

在node1下使用beeline

beeline -u jdbc:hive2://node1:10000

信息如下:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/apache-hive-3.1.0-bin/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop-3.1.1/share/hadoop/common/lib/slf4j-log4j12-1.7.25.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.apache.logging.slf4j.Log4jLoggerFactory]
Connecting to jdbc:hive2://node1:10000
Connected to: Apache Hive (version 3.1.0)
Driver: Hive JDBC (version 3.1.0)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 3.1.0 by Apache Hive
0: jdbc:hive2://node1:10000> show databases;
INFO : Compiling command(queryId=root_20210118113531_49c3505a-80e1-4aba-9761-c2f77a06ac5f): show databases
INFO : Concurrency mode is disabled, not creating a lock manager
INFO : Semantic Analysis Completed (retrial = false)
INFO : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:database_name, type:string, comment:from deserializer)], properties:null)
INFO : Completed compiling command(queryId=root_20210118113531_49c3505a-80e1-4aba-9761-c2f77a06ac5f); Time taken: 0.903 seconds
INFO : Concurrency mode is disabled, not creating a lock manager
INFO : Executing command(queryId=root_20210118113531_49c3505a-80e1-4aba-9761-c2f77a06ac5f): show databases
INFO : Starting task [Stage-0:DDL] in serial mode
INFO : Completed executing command(queryId=root_20210118113531_49c3505a-80e1-4aba-9761-c2f77a06ac5f); Time taken: 0.029 seconds
INFO : OK
INFO : Concurrency mode is disabled, not creating a lock manager
+----------------+
| database_name |
+----------------+
| default |
+----------------+
1 row selected (1.248 seconds)

可以使用ps命令查看hiveserver2和metastore服务的信息

ps -ef | grep metastore

root     11745   681  2 19:21 pts/2    00:00:30 /usr/local/jdk8u222-b10/bin/java -Dproc_jar -Dproc_metastore -Dlog4j.configurationFile=hive-log4j2.properties -Djava.util.logging.config.file=/usr/local/hive/conf/parquet-logging.properties -Dyarn.log.dir=/usr/local/hadoop/logs -Dyarn.log.file=hadoop.log -Dyarn.home.dir=/usr/local/hadoop -Dyarn.root.logger=INFO,console -Djava.library.path=/usr/local/hadoop/lib/native -Xmx102400m -Dhadoop.log.dir=/usr/local/hadoop/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/usr/local/hadoop -Dhadoop.id.str=root -Dhadoop.root.logger=INFO,console -Dhadoop.policy.file=hadoop-policy.xml -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.util.RunJar /usr/local/hive/lib/hive-metastore-3.0.0.jar org.apache.hadoop.hive.metastore.HiveMetaStore -p 9083
root     16527 91798  0 19:43 pts/1    00:00:00 grep --color=auto metastore


ps -ef | grep hiveserver2

root     11744   681 10 19:21 pts/2    00:02:20 /usr/local/jdk8u222-b10/bin/java -Dproc_jar -Dproc_hiveserver2 -Dlog4j.configurationFile=hive-log4j2.properties -Djava.util.logging.config.file=/usr/local/hive/conf/parquet-logging.properties -Djline.terminal=jline.UnsupportedTerminal -Dyarn.log.dir=/usr/local/hadoop/logs -Dyarn.log.file=hadoop.log -Dyarn.home.dir=/usr/local/hadoop -Dyarn.root.logger=INFO,console -Djava.library.path=/usr/local/hadoop/lib/native -Xmx102400m -Dhadoop.log.dir=/usr/local/hadoop/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/usr/local/hadoop -Dhadoop.id.str=root -Dhadoop.root.logger=INFO,console -Dhadoop.policy.file=hadoop-policy.xml -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.util.RunJar /usr/local/hive/lib/hive-service-3.0.0.jar org.apache.hive.service.server.HiveServer2

猜你喜欢

转载自blog.csdn.net/qq_35260875/article/details/112770206