Hive分布式集群部署

Hive编程,可以使开发者不需要考虑底层MapReduce算法如何实现,而只需集中精力关注SQL语句的编写即可。

Apache Hive 是建立在Hadoop上的数据仓库,它提供了一系列工具,可以用来查询和分析数据,Hive提供了执行SQL的接口,用于操作存储在Hadoop分布式文件系统HDFS中的数据。

Hive 可以将结构化的数据文件映射成为一张数据库表,并且提供了便捷的sql语句查询功能,开发者可以通过SQL语句将实现的业务功能转化为MapReduce任务来运行。

Hive 数据仓库是构建在Hadoop的分布式文件系统HDFS之上,而Hive底层的设计是通过MapReduce计算框架来执行用户提交的任务。 Hive比较适合处理离线数据。

 

部署Hive 分布式之前,先部署 Hadoop 分布式集群系统。 然后 hive 通过 haproxy + mysql 组成。

一,Hive 体系结构:

hive 体系结构由多个组件组成,其中包含元数据,驱动(包含编辑器,优化器,执行器),用户接口(client,UI,ThriftServer)。 Hive 体系结构如图:

1,元数据(metastore)

元数据通常存储在关系型数据库C RDBMS )中,如MySQL,元数据中包含了表名、表列、分区、表的类型(是否属于外部表〉和数据存储的路径等信息。

 

2,驱动(driver)

Hive 的驱动在接收到Hive SQL 语句后,通过创建会话来启动语旬的执行,并监控执行的生命周期和进度。同时,它会将Hive SQL 在执行过程中产生的元数据信息进行存储。

 

3, 编辑器

编译器对Hive SQL 查询进行编译,将其转化成可执行的计划,该计划包含了Hadoop

MapReduce 需要执行的任务和步骤。编译器将查询转换为抽象语法树CAS T )。

编译器在检查兼容性和编译时错误之后,将抽象语法树CAST )转换为有向无环图

( DAG ) 。有向无环图根据输入的查询和数据将操作符划分到Map Reduce 的各个阶段

( Stage )和任务( Task )中。

 

4,优化器

在执行计划上执行各种转换以获得优化的有向无环图( DAG ),如将连接管道转换成单个连接来获得更好的性能。

优化器还可以拆分任务,如在Reduce 操作之前对数据应用进行转换,以便提供更好的性能和可伸缩性。

 

5 . 执行器

在编译和优化之后,执行器将执行任务。它对Hadoop 的作业CJob )进行跟踪和交互,并调度需要运行的任务。

 

6. 用户接口

客户端( Client )在日常开发中用得较为频繁,启动Hive 终端会同时启动一个Hi ve 副本。用户可以使用JDBC C 或ODBC )客户端连接到Hi ve Server 。

&注意:连接到Hive Server 时, 需指定Hive Server 所在的节点信息,并且确保该节点的Hive Server 服务进程运行正常。Hive 的Thrift Server 支持多语言,如C++ 、Java 和Python 等。

& 提示: Hive 的数据存储依赖Hadoop 的分布式文件系统( HDFS ) , 在Hive 的查询任务中SELECT * FROM TBL 语句不会产生MapReduce 任务,其他带条件和聚合类

的查询都会启动MapRe duce 任务。

 

二, Hive 与关系型数据库(RDBMS):

数据仓库( Hive ) 和关系型数据库C RDBMS )虽然都是将数据进行结构化存储,但是二者之间的使用方式和应用场景还是有区别的。其异同点如表

三,Hive 的安装和配置;

在大数据应用场景下, 单个节点的Hive 是难以满足业务需求的。因而需要安装一个高可用、分布式的Hi ve 集群未满足用户提交的任务请求。

这里将Hive 安装在Hadoop 集群中,能够省略一些软件的安装如JDK 、Hadoop 。

 

3.1 Hive 集群基础架构

一个高可用、分布式的Hive 集群由3 个Hive节点(至少) 和2 个代理( HAProxy )构成。3个Hive 节点负责提交任务到集群上, 2 个代理(HAProxy, haproxy 可以使用keepalive自动切换)负责给客户端( Cli ent )提供服务并承担负载均衡的职责。

实际测试环境如下:

[hadoop@big-master2 ~]$ cat /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

## bigdata cluster ##

192.168.41.20 big-master1 #bigdata1 namenode1,zookeeper,resourcemanager Haproxy-master

192.168.41.21 big-master2 #bigdata2 namenode2,zookeeper,slave,resourcemanager haproxy-standby

192.168.41.22 big-slave01 #bigdata3 datanode1,zookeeper,slave hive1

192.168.41.25 big-slave02 #bigdata4 datanode2,zookeeper,slave hive2

192.168.41.27 big-slave03 #bigdata5 datanode3,zookeeper,slave hive3

 

192.168.41.17 tidb05.500.com #hive mysql

 

----------------------------------------------------

3.2 Hive 集群的架构图:

备注: 所有的数据仓库Hive 节点的地址需要指向相同的hadoop 分布式文件系统(hdfs)上,否则,各个Hive节点的数据源地址不一致,会导致统计结果发生错误。

 

3.3 利用Haproxy 实现Hive server 负载均衡

Haproxy 是一款提供高可用性,负载均衡及基于TCP(第4层)和HTTP(第7层)应用的代理软件,Haproxy是完全开源免费的,它可以快速提供代理解决方案。这里haproxy 通过 master - standby 模式部署,分别在big-master1/2 节点上。 hive 分别在 hadoop 数据节点 big-slave01-3 三个节点上。 元数据信息 放在独立的mysql 数据库 上。

 

https://www.haproxy.org/ -- haproxy 官方网站

https://www.haproxy.org/download/ --haproxy下载地址

 

http://www.apache.org/dyn/closer.cgi/hive/ --hive官方网站

https://mirrors.tuna.tsinghua.edu.cn/apache/hive/ --hive下载地址

 

3.4 haproxy 安装编辑:

安装gcc组,安装openssl

tar -xvf haproxy-1.8.24.tar.gz -C /usr/local/ && cp haproxy-1.8* haproxy

 

主备一样:

[hadoop@big-master1 ~]$ haproxy -vv

HA-Proxy version 1.8.24 2020/02/15

Copyright 2000-2020 Willy Tarreau <willy@haproxy.org>

 

Build options :

TARGET = linux2628

CPU = generic

CC = gcc

CFLAGS = -O2 -g -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv -Wno-unused-label

OPTIONS = USE_LIBCRYPT=1 USE_CRYPT_H=1 USE_ZLIB=1 USE_OPENSSL=1 USE_PCRE=1

 

Default settings :

maxconn = 2000, bufsize = 16384, maxrewrite = 1024, maxpollevents = 200

 

Built with OpenSSL version : OpenSSL 1.0.2k-fips 26 Jan 2017

Running on OpenSSL version : OpenSSL 1.0.2k-fips 26 Jan 2017

OpenSSL library supports TLS extensions : yes

OpenSSL library supports SNI : yes

OpenSSL library supports : SSLv3 TLSv1.0 TLSv1.1 TLSv1.2

Built with transparent proxy support using: IP_TRANSPARENT IPV6_TRANSPARENT IP_FREEBIND

Encrypted password support via crypt(3): yes

Built with multi-threading support.

Built with PCRE version : 8.32 2012-11-30

Running on PCRE version : 8.32 2012-11-30

PCRE library supports JIT : no (USE_PCRE_JIT not set)

Built with zlib version : 1.2.7

Running on zlib version : 1.2.7

Compression algorithms supported : identity("identity"), deflate("deflate"), raw-deflate("deflate"), gzip("gzip")

Built with network namespace support.

 

Available polling systems :

epoll : pref=300, test result OK

poll : pref=200, test result OK

select : pref=150, test result OK

Total: 3 (3 usable), will use epoll.

 

Available filters :

[SPOE] spoe

[COMP] compression

[TRACE] trace

 

3.4.1 对应的配置文件:

[hadoop@big-master1 ~]$ cat /usr/local/haproxy/

.build_opts contrib/ ebtree/ haproxy LICENSE README scripts/ tests/

CHANGELOG CONTRIBUTING examples/ haproxy-1.8.24/ MAINTAINERS reg-tests/ src/ VERDATE

config.cfg doc/ .gitignore include/ Makefile ROADMAP SUBVERS VERSION

[hadoop@big-master1 ~]$ cat /usr/local/haproxy/config.cfg # 主节点

global

daemon

nbproc 1

 

defaults

#mode {tcp|http|health},tcp表示4层,http表示7层,health仅作为健康检查使用.

mode tcp

retries 2 #尝试2次失败则从集群移除

option redispatch #如果失效则强制转换其他服务器

option abortonclose #连接数过大则自动关闭

maxconn 1024 #最大连接数

timeout connect 1d #连接超时时间,用来保证hive查询数据能返回结果

timeout client 1d #连接超时时间,用来保证hive查询数据返回结果

timeout server 1d #同上

timeout check 2000 #健康检测时间

log 127.0.0.1 local0 err #日志级别,[err|warning|info|debug]

 

listen admin_stats #定义管理界面

bind 0.0.0.0:1090 #管理界面访问IP和端口

mode http #管理界面所使用的的协议

maxconn 10 #max connections

stats refresh 30s #30s 自动刷新

stats uri / #访问URL

stats realm Hive\ Haproxy #验证窗口提示

stats auth admin:admin #401验证用户密码

listen hive #hive后端定义

bind 0.0.0.0:10001 #ha作为porxy所绑定的IP端口

mode tcp #以第4层方式代理

balance leastconn #调度算法leastconn最少连接数分配,或者roundrobin轮询分配

maxconn 1024 #max connections

server hive_1 big-slave01:10000 check inter 180000 rise 1 fall 2

server hive_2 big-slave02:10000 check inter 180000 rise 1 fall 2

server hive_3 big-slave03:10000 check inter 180000 rise 1 fall 2

 

[hadoop@big-master2 ~]$ cat /usr/local/haproxy/config.cfg

global

daemon

nbproc 1

 

defaults

#mode {tcp|http|health},tcp表示4层,http表示7层,health仅作为健康检查使用.

mode tcp

retries 2 #尝试2次失败则从集群移除

option redispatch #如果失效则强制转换其他服务器

option abortonclose #连接数过大则自动关闭

maxconn 1024 #最大连接数

timeout connect 1d #连接超时时间,用来保证hive查询数据能返回结果

timeout client 1d #连接超时时间,用来保证hive查询数据返回结果

timeout server 1d #同上

timeout check 2000 #健康检测时间

log 127.0.0.1 local0 err #日志级别,[err|warning|info|debug]

 

listen admin_stats #定义管理界面

bind 0.0.0.0:1090 #管理界面访问IP和端口

mode http #管理界面所使用的的协议

maxconn 10 #max connections

stats refresh 30s #30s 自动刷新

stats uri / #访问URL

stats realm Hive\ Haproxy #验证窗口提示

stats auth admin:admin #401验证用户密码

listen hive #hive后端定义

bind 0.0.0.0:10001 #ha作为porxy所绑定的IP端口

mode tcp #以第4层方式代理

balance leastconn #调度算法leastconn最少连接数分配,或者roundrobin轮询分配

maxconn 1024 #max connections

server hive_1 big-slave01:10000 check inter 180000 rise 1 fall 2

server hive_2 big-slave02:10000 check inter 180000 rise 1 fall 2

server hive_3 big-slave03:10000 check inter 180000 rise 1 fall 2

备注: 在server 配置模块中,设直的主机别名或者域名要能够被识别。IP 和端口每隔3分钟( 180000 毫秒)检查一次。每当有用户请求10000 端口号,就会创建一个

log 文件。如果时间设直太短,会导致log 文件频繁被创建。

 

测试:

master1:

master 2

3.5 安装分布式Hive 集群.

hive 的核心部分是由java代码实现的,在$hive_home/lib目录下存放着众多JAR文件,如hive-jdbc*.jar, hive-exec*.jar 等。每个jar包文件都实现了hive 对应的功能,用户开发者只需要关心如何使用即可。

 

Hive 安装:

tar -zxvf apache-hive-2.1.1-bin.tar.gz

mv apache-hive-2.1.1-bin hive

 

添加全局变量:

/etc/profile

## Hive ##

export HIVE_HOME=/usr/local/hive

export PATH=$HIVE_HOME/bin:$PATH

 

 

3.5.1 目录创建:

在Hadoop 分布式文件系统上创建数据仓库( Hive )的路径地址。

#在Hadoop 分布式文件系统( HDFS )中创建Hive 目录

[hadoop@big-master1~]$ hdfs dfs mkdir - p /user/hive/warehouse

#在Hadoop 分布式文件系统( HDFS )中创建Hive 临时目录

[hadoop@big-master1 ~]$ hdfs dfs - mkdir - p /tmp/hive/

#给数据仓库( Hive )地址赋予权限

[hadoop@big-master1 ~]$ hdfs dfs - chmod 777 /user/hive/warehouse

#给Hive 临时目录赋予权限

[hadoop@big-master1 ~]$ hdfs dfs - chmod 777 /tmp/hive

 

[hadoop@big-master1 ~]$ hdfs dfs -ls /

Found 10 items

drwxr-xr-x - hadoop supergroup 0 2020-05-26 16:17 /data

drwxr-xr-x - hadoop supergroup 0 2020-06-04 23:41 /hbase

drwxr-xr-x - hadoop supergroup 0 2020-05-24 02:53 /sqoop-mysql

drwxr-xr-x - hadoop supergroup 0 2020-05-24 03:04 /sqoop-mysql11

drwxr-xr-x - hadoop supergroup 0 2020-05-24 02:59 /sqoop-mysql22

drwxr-xr-x - hadoop supergroup 0 2020-05-15 14:59 /test

drwxr-xr-x - hadoop supergroup 0 2020-05-18 17:15 /test01

drwx------ - hadoop supergroup 0 2020-06-11 12:22 /tmp

drwxr-xr-x - hadoop supergroup 0 2020-06-11 12:21 /user

drwxr-xr-x - root supergroup 0 2020-05-26 23:08 /var

[hadoop@big-master1 ~]$ hdfs dfs -ls /user/hive

Found 2 items

drwx-wx-wx - hadoop supergroup 0 2020-06-12 12:06 /user/hive/tmp

drwxrwxrwx - hadoop supergroup 0 2020-06-12 17:27 /user/hive/warehouse

[hadoop@big-master1 ~]$ hdfs dfs -ls /user/hive/warehouse/

Found 2 items

drwxrwxrwx - hadoop supergroup 0 2020-06-15 11:44 /user/hive/warehouse/hive_test01.db

drwxrwxrwx - hadoop supergroup 0 2020-06-12 17:22 /user/hive/warehouse/test

 

3.5.2 配置文件: #hive 主要hadoop big-slave01 - big-slave03 三个数据节点上。

[hadoop@big-slave01 ~]$ cd /usr/local/hive/

[hadoop@big-slave01 hive]$ ls

bin binary-package-licenses conf examples hcatalog jdbc lib LICENSE NOTICE RELEASE_NOTES.txt scripts

[hadoop@big-slave01 hive]$ cd conf/

[hadoop@big-slave01 conf]$ ls

\ hive-env.sh hive-log4j2.properties.template llap-daemon-log4j2.properties.template

beeline-log4j2.properties.template hive-env.sh.template hive-site.xml metastore_db

derby.log hive-exec-log4j2.properties.template ivysettings.xml nohup.out

hive-default.xml.template hive-log4j2.properties llap-cli-log4j2.properties.template parquet-logging.properties

 

[hadoop@big-slave01 conf]$ cat hive-env.sh

## 添加修改,其他为默认 ##

export HADOOP_HOME=/usr/local/hadoop

export JAVA_HOME=/usr/local/jdk1.8.0_251

export HIVE_HOME=/usr/local/hive

export HIVE_CONF_DIR=$HIVE_HOME/conf

 

[hadoop@big-slave01 conf]$ cat hive-site.xml

## 以下为新增修改 ##

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

 

<configuration>

<property>

<name>hive.exec.scratchdir</name>

<value>/user/hive/tmp</value> # 在hdfs 系统上,预先创建好。

<description>HDFS路径,用于存储不同map/reduce阶段的执行计划和这些阶段的中间输出结果.</description>

</property>

 

<property>

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

<value>/data/hive/job/${user.name}</value>

<description>本地存储Hive的作业(JOB)信息</description>

</property>

 

<property>

<name>hive.downloaded.resources.dir</name>

<value>/data/hive/software/${hive.session.id}_resources</value>

<description>本地临时目录添加资源到远程文件系统中</description>

</property>

 

<property>

<name>hive.metastore.warehouse.dir</name>

<value>/user/hive/warehouse</value>

<description>数据仓库的存储路径地址</description>

</property>

 

<property>

<name>javax.jdo.option.ConnectionDirverName</name>

<value>com.mysql.jdbc.Driver</value>

<description>MySQL驱动类</description>

</property>

 

<property>

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

<value>hive_rw</value>

<description>MySQL数据库登陆账号</description>

</property>

 

<property>

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

<value>hive_rw#123</value>

<description>MySQL数据库登陆密码</description>

</property>

 

<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://192.168.41.17:3309/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>

<description>MySQL数据库的JDBC连接地址</description>

</property>

<property>

<name>datanucleus.schema.autoCreateAll</name>

<value>true</value>

</property>

 

</configuration>

 

备注:Hive 默认存储元数据的数据库是Derby ,它只能九许一个会话连接,只适合用于

简单的测试场景。在实际业务场景中,往往会有多个会话连接的情况存在。

为了支持多用户、多会话,需要使用一个独立的元数据库,这里选择了MySQL

作为元数据库。由于Hive 安装包,默认是没有MySQL 驱动包的,所以在启动Hive Server 之前,

需要确保$HIVE_HOME/ lib 目录下存在MySQL 驱动包。 mysql 驱动包详见前面的章节

 

[hadoop@big-slave01 conf]$ cat hive-log4j2.properties

# 以下为修改,其他默认 #

property.hive.log.dir = /data/hive/log

property.hive.log.file = hive.log

property.hive.perflogger.log.level = INFO

 

3.5.3 启动

在$HIVE HOME/bin 目录下存放着可以执行各种H ive 服务的脚本文件,其中包含Hive的命令行界面Chive 脚本) 。

提示: Hive 命令行界面使用方式包含两种,一种是hive 脚本,无须登录账号和密码;另一种是beeline 脚本,需要使用登录账号和密码。

-- 在运行Hive 命令行或H ive 的Thri 丘Server 之前,需要先初始化元数据信息。

 

[hadoop@big-slave01 conf]$ schematool -initSchema -dbType mysql

SLF4J: Class path contains multiple SLF4J bindings.

SLF4J: Found binding in [jar:file:/usr/local/hive/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.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]

Metastore connection URL: jdbc:derby:;databaseName=metastore_db;create=true

Metastore Connection Driver : org.apache.derby.jdbc.EmbeddedDriver

Metastore connection User: hive_rw

Starting metastore schema initialization to 2.3.0

Initialization script hive-schema-2.3.0.mysql.sql

Error: Syntax error: Encountered "<EOF>" at line 1, column 64. (state=42X01,code=30000)

org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state would be inconsistent !!

Underlying cause: java.io.IOException : Schema script failed, errorcode 2

Use --verbose for detailed stacktrace.

*** schemaTool failed ***

 

### 提示找不到URL 地址

<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://192.168.41.17:3309/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>

<description>MySQL数据库的JDBC连接地址</description>

</property>

这里写错了,所以,这里面的格式,一定要正确。

 

正常初始化的日志:

#将元数据信息初始化到MySQL 数据库中

[hadoop@big-slave01 conf]$ schematool -initSchema -dbType mysql

SLF4J: Class path contains multiple SLF4J bindings.

SLF4J: Found binding in [jar:file:/usr/local/hive/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.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]

Metastore connection URL: jdbc:mysql://192.168.41.17:3309/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false

Metastore Connection Driver : org.apache.derby.jdbc.EmbeddedDriver

Metastore connection User: hive_rw

Starting metastore schema initialization to 2.3.0

Initialization script hive-schema-2.3.0.mysql.sql

Initialization script completed

schemaTool completed

 

此时在MySQL服务器可以看见有对应的连接:(192.168.41.17 mysql数据库服务)

(root@localhost@(none))>> show processlist;

+----+---------+---------------------+------+---------+------+-----------+------------------------------------------------------------------------------------------------------+

| Id | User | Host | db | Command | Time | State | Info |

+----+---------+---------------------+------+---------+------+-----------+------------------------------------------------------------------------------------------------------+

| 3 | root | localhost | NULL | Query | 0 | starting | show processlist |

| 5 | hive_rw | 192.168.41.22:37526 | hive | Query | 0 | query end | CREATE TABLE IF NOT EXISTS `SKEWED_COL_NAMES` ( `SD_ID` bigint(20) NOT NULL, `SKEWED_COL_NAME` varch |

+----+---------+---------------------+------+---------+------+-----------+------------------------------------------------------------------------------------------------------+

2 rows in set (0.00 sec)

 

 

完成hive元数据初始化后,可以运行Hive 命令行界面做简单的测试,具体操作如下:

[hadoop@big-slave01 conf]$ hive -e "show tables;"

SLF4J: Class path contains multiple SLF4J bindings.

SLF4J: Found binding in [jar:file:/usr/local/hive/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.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]

 

OK

Time taken: 10.9 seconds

----------------------------------------

[hadoop@big-slave02 conf]$ beeline

SLF4J: Class path contains multiple SLF4J bindings.

SLF4J: Found binding in [jar:file:/usr/local/hive/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.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]

Beeline version 2.3.7 by Apache Hive

beeline>

 

-- Hive 的η盯住Se凹er 提供了可远程访问其他进程的功能,同时也提供了JDBC (或ODBC )

访问Hive 的功能。所有Hive 的Client 都需要元数据服务( MetaStore ) , Hive 使用该服务来

存储表结构( Schema )和其他元数据信息。

 

 

3.5.4 启动高可用:

将各个节点的HAProxy 服务进程和Hive 的服务进程进行启动,构建成一个分布式的、高可用的Hive 集群。具体操作命令如下:

#在data1 节点启动hiveserver2 服务

[hadoop@big-slave01 ~]$ nohup hive --service hiveserver2 &

#在data2节点启动hivesreserver2 服务

[hadoop@big-slave02 ~]$ nohup hive --service hiveserver2 &

#在data3 节点启动hiveserver2 服务

[hadoop@big-slave03 ~]$ nohup hive --service hiveserver2 &

 

#在big-master1 节点启动haproxy 服务

[hadoop@big-master1 ~]$ haproxy -f /usr/local/haproxy/config.cfg

#在big-master2 节点启动haproxy 服务

[hadoop@big-maste2 ~]$ haproxy -f /usr/local/haproxy/config.cfg

至此,若整个流程未出错,分布式的、高可用的Hive 集群就安装完成了。

[hadoop@big-master1 ~]$ jps

30037 JournalNode

10181 HMaster

4023 ResourceManager

29642 DFSZKFailoverController

29804 NameNode

28141 QuorumPeerMain

26558 Jps

 

[hadoop@big-master2 ~]$ jps

20032 NameNode

20116 JournalNode

20324 DFSZKFailoverController

31540 HMaster

18830 QuorumPeerMain

2462 ResourceManager

1982 Jps

 

[hadoop@big-slave01 ~]$ jps

10161 NodeManager

28338 HRegionServer

10546 RunJar

7702 QuorumPeerMain

6070 Jps

8583 DataNode

8686 JournalNode

10638 RunJar

 

[root@big-slave02 ~]# jps

5187 DataNode

8581 RunJar

6697 NodeManager

4153 Jps

4362 QuorumPeerMain

5290 JournalNode

25869 HRegionServer

 

[root@big-slave03 ~]# jps

4562 QuorumPeerMain

5442 DataNode

26004 HRegionServer

6389 RunJar

29622 Jps

6903 NodeManager

5545 JournalNode

 

[hadoop@big-slave01 ~]$ ps -ef |grep hive

hadoop 6091 5882 0 18:09 pts/0 00:00:00 grep --color=auto hive

hadoop 10546 1 0 Jun12 ? 03:47:02 /usr/local/jdk1.8.0_251/bin/java -Xmx256m -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/usr/local/hadoop/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/usr/local/hadoop -Dhadoop.id.str=hadoop -Dhadoop.root.logger=INFO,console -Djava.library.path=/usr/local/hadoop/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Dproc_metastore -Dlog4j.configurationFile=hive-log4j2.properties -Djava.util.logging.config.file=/usr/local/hive/conf/parquet-logging.properties -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.util.RunJar /usr/local/hive/lib/hive-metastore-2.3.7.jar org.apache.hadoop.hive.metastore.HiveMetaStore

hadoop 10638 1 2 Jun12 ? 18:30:51 /usr/local/jdk1.8.0_251/bin/java -Xmx256m -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/usr/local/hadoop/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/usr/local/hadoop -Dhadoop.id.str=hadoop -Dhadoop.root.logger=INFO,console -Djava.library.path=/usr/local/hadoop/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Dproc_hiveserver2 -Dlog4j.configurationFile=hive-log4j2.properties -Djava.util.logging.config.file=/usr/local/hive/conf/parquet-logging.properties -Djline.terminal=jline.UnsupportedTerminal -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.util.RunJar /usr/local/hive/libhive-service-2.3.7.jar org.apache.hive.service.server.HiveServer2

 

 

[hadoop@big-master1 ~]$ ps -ef |grep haproxy

hadoop 26604 25313 0 18:09 pts/0 00:00:00 grep --color=auto haproxy

hadoop 27175 1 0 Jun12 ? 00:11:16 haproxy -f /usr/local/haproxy/config.cfg

 

---------------------------------- The End --------------------------------------

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值