在Hadoop上搭建Hive

一、概述

这是Hadoop之旅的第二站,之前我们已经搭好了Hadoop和HBase,今天我们在此基础上建立Hive。
我们接着之前的架构图进行补充
我们假设只有三台服务器,并且要在三台服务器上做高可用。

服务 服务器1 服务器2 服务器3
NameNode Δ
DataNode
JournalNode
ResourceManager
NodeManager
Zookeeper
ZKFC
HMaster Δ
HRegionServer
Metastore
Hive

二、MySQL环境搭建

因为Hive需要一些RDB的特性来支持,所以我们选择MySQL8作为支撑。
官网下载的xz压缩包需要用xz -d FILENAME来解压,然后再使用tar -xzvf
首先创建MySQL用户

groupadd mysql
useradd -r -g mysql mysql
mysqld --initialize

初始化之后,去/etc/init.d/mysql修改路径

basedir=/home/user/mysql-8.0.16/
datadir=/home/user/mysql_data/

然后就可以通过以下命令启动MySQL

service mysql start

这里我估计启动不起来,因为初始化的时候没有设置用户,很多文件夹没有给权限,按照提示把需要的权限都给mysql用户。
如果客户端连不上,找到你的mysql.sock所在位置,做一个软链接到tmp文件夹下面。
进入MySQL改好密码后创建Hive用户

create database hive;
CREATE USER 'hive' IDENTIFIED BY 'hive';
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;
flush privileges;

这里MySQL装得比较混乱,其实是我故意初始化时候少设置参数来看看有什么坑。
MySQL8太强了,好好感受一下吧!

三、Hive的配置

解压缩Hive到我们的用户目录文件夹下面。

3.1、hive-env.sh

首先创建一个配置文件

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

进而编辑这个文件

# Set HADOOP_HOME to point to a specific hadoop install directory
# HADOOP_HOME=${bin}/../../hadoop
HADOOP_HOME=/home/user/hadoop2

# Hive Configuration Directory can be controlled by:
# export HIVE_CONF_DIR=
export JAVA_HOME=/usr
export HADOOP_HOME=$HADOOP_HOME
export HIVE_HOME=/home/user/apache-hive-2.3.5-bin
export HIVE_CONF_DIR=${HIVE_HOME}/conf


# Folder containing extra libraries required for hive compilation/execution can be controlled by:
# export HIVE_AUX_JARS_PATH=
export HIVE_AUX_JARS_PATH=${HIVE_HOME}/lib

3.2、hive-site.xml

  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://hadoop1:3306/hive?createDatabaseIfNotExist=true</value>
    <description>
      JDBC connect string for a JDBC metastore.
      To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
      For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
    </description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.cj.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>hive</value>
    <description>password to use against metastore database</description>
  </property>
  <property>
    <name>hive.exec.local.scratchdir</name>
    <value>/home/user/hive_cache</value>
    <description>Local scratch space for Hive jobs</description>
  </property>
  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>/home/user/hive_cache</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
  </property>

在制定目录建立hive_cache文件夹。
这边mysql的端口是要配置成3306,虽然netstat显示了33060。这个问题要以后研究一下,@todo...

3.3、下载JAR包

你可以根据你的系统版本,去官网找你需要的JAR包
https://dev.mysql.com/downloads/connector/j/

[root@hadoop1 user]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core) 

下载好之后如果是RPM的话需要解压缩取出JAR

rpm2archive mysql-connector-java-8.0.16-1.el7.noarch.rpm
tar -zxvf mysql-connector-java-8.0.16-1.el7.noarch.rpm.tgz -C mysql-connector-java-8.0.16-1.el7/

把解压缩的JAR包放到你上面配置的lib文件夹下面

mv mysql-connector-java.jar apache-hive-2.3.5-bin/lib/

四、部署从服务器

图省事,直接文件夹穿过去,有点慢

scp -r apache-hive-2.3.5-bin root@hadoop2:/home/user/
scp -r apache-hive-2.3.5-bin root@hadoop3:/home/user/

slave端配置, 修改 conf/hive-site.xml 文件

  <property>
    <name>hive.metastore.uris</name>
    <value>thrift://hadoop1:9083</value>
    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
  </property>

五、Hive的初始化

[root@hadoop1 user]# apache-hive-2.3.5-bin/bin/schematool -dbType mysql -initSchema
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/user/apache-hive-2.3.5-bin/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/user/hadoop2/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://hadoop1:3306/hive?createDatabaseIfNotExist=true
Metastore Connection Driver :    com.mysql.cj.jdbc.Driver
Metastore connection User:   hive
Starting metastore schema initialization to 2.3.0
Initialization script hive-schema-2.3.0.mysql.sql
Initialization script completed
schemaTool completed

然后我们在主服务器启动Metastore

./apache-hive-2.3.5-bin/bin/hive --service metastore &

这时候可以看到RunJar进程已经在了

[root@hadoop1 user]# jps
2464 NodeManager
16417 HQuorumPeer
6033 Jps
32066 NameNode
32180 DataNode
18470 HMaster
5926 RunJar
18589 HRegionServer
32383 JournalNode

我们在hadoop2打开hive,用sql创建一个库一个表,在hadoop3也可以看到。Hive集群搭建完毕

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容