Linux第11课:Hive数据库安装

Linux第11课:Hive数据库安装

时间 2019-03-15 下午3:30

主讲 张春志

地点 四楼电教室


在Hadoop生态圈中,Hbase和Hive是两个使用频率最高、最重要的组件。首先来看看他们的特点:

Hive

不想用程序语言开发MapReduce的朋友比如DB们,熟悉SQL的朋友可以使用Hive开离线的进行数据处理与分析工作。

注意Hive现在适合在离线下进行数据的操作,就是说不适合在挂在真实的生产环境中进行实时的在线查询或操作,因为一个字“慢”。相反

起源于FaceBook,Hive在Hadoop中扮演数据仓库的角色。建立在Hadoop集群的最顶层,对存储在Hadoop群上的数据提供类SQL的接口进行操作。你可以用 HiveQL进行select,join,等等操作。

如果你有数据仓库的需求并且你擅长写SQL并且不想写MapReduce jobs就可以用Hive代替。

HBase

HBase作为面向列的数据库运行在HDFS之上,HDFS缺乏随即读写操作,HBase正是为此而出现。HBase以Google BigTable为蓝本,以键值对的形式存储。项目的目标就是快速在主机内数十亿行数据中定位所需的数据并访问它。

HBase是一个数据库,一个NoSql的数据库,像其他数据库一样提供随即读写功能,Hadoop不能满足实时需要,HBase正可以满足。如果你需要实时访问一些数据,就把它存入HBase。

你可以用Hadoop作为静态数据仓库,HBase作为数据存储,放那些进行一些操作会改变的数据。

可见,hive与hbase各有优劣,hive在使用上更贴近用户,但hbase在实时查询上更优越。为此,常常用hive整合hbase,通过整合,不仅可完成HBase的数据实时查询,而且可以使用Hive查询HBase中的数据完成复杂的数据分析。

下面,进行安装和调试:


一、主节点上,分布式安装hbase

详见第6课

二、主节点上,安装mysql

Hive的元数据要存储在mysql中,所以在安装hive之前,要先安装mysql。

详见第4课附6,及python第7课

进入mysql命令行(root,jxsr201903),创建一个用户hive,密码abc123456。

用root用户进入mysql

mysql -u root -p

set global validate_password_policy=LOW;

GRANT ALL ON *.* to 'hive'@'%' IDENTIFIED BY 'abc123456' WITH GRANT OPTION;  

flush privileges;

quit

重启mysql: 

service mysqld restart

远程连接,测试成功。

补充:

如果在操作时,误删performance_schema,恢复方法是:

mysql_upgrade -u root -p

三、主节点上,下载hive2.34安装包:

下载地址:

https://mirrors.tuna.tsinghua.edu.cn/apache/hive/

apache-hive-2.3.4-bin.tar.gz   226M

下载后,通过ftp转移动/usr/local

关于ftp的创建,请看:Linux搭建FTP文件服务器

tar -xvf apache-hive-2.3.4-bin.tar.gz

mv apache-hive-2.3.4-bin hive-2.3.4

四、主节点上,下载mysql驱动:

下载地址:http://www.onlinedown.net/soft/988736.htm

windows系统下载,解压,上传mysql-connector-java-5.1.7-bin.jar文件到FTP

把mysql驱动文件mysql-connector-java-5.1.7-bin.jar复制到hive下的lib目录:

cp /mnt/home2/xhfd/mysql-connector-java-5.1.7-bin.jar /usr/local/hive-2.3.4/lib/

五、主节点上,配置环境变量:

vim /etc/profile

export PATH=/usr/local/hive-2.3.4/bin:$PATH

source /etc/profile

六、主节点上,配置hive

(一)四个默认模板不变:

hive-default.xml.template

hive-env.sh.template

hive-exec-log4j.properties.template

hive-log4j.properties.template

以上四个默认模板,不需要修改,直接复制。分别为:

cp    /usr/local/hive-2.3.4/conf/hive-default.xml.template    /usr/local/hive-2.3.4/conf/hive-site.xml

cp    /usr/local/hive-2.3.4/conf/hive-env.sh.template     /usr/local/hive-2.3.4/conf/hive-env.sh

cp     /usr/local/hive-2.3.4/conf/hive-exec-log4j2.properties.template      /usr/local/hive-2.3.4/conf/hive-exec-log4j2.properties

cp     /usr/local/hive-2.3.4/conf/hive-log4j2.properties.template     /usr/local/hive-2.3.4/conf/hive-log4j2.properties

注意:在后面的初始化元数据时报错,提示有冲突,则修改掉一个文件:

cd  /usr/local/hive-2.3.4/lib

mv log4j-slf4j-impl-2.6.2.jar log4j-slf4j-impl-2.6.2.jar.bak

(二)配置hive-env.sh

vim  /usr/local/hive-2.3.4/conf/hive-env.sh

加入以下内容:

export HADOOP_CONF_DIR=/usr/local/hadoop-2.7.7        #hadoop路径

export HIVE_CONF_DIR=/usr/local/hive-2.3.4/conf                     #hive路径

source  /usr/local/hive-1.2.2/conf/hive-env.sh

(三)修改 hive-log4j.properties

创建日志目录:

cd  /usr/local/hive-2.3.4

mkdir logs

vim  /usr/local/hive-2.3.4/conf/hive-log4j2.properties

加入以下内容:

hive.log.dir=/usr/local/hive-2.3.4/logs

(四)修改hive-site.xml

vim /usr/local/hive-2.3.4/conf/hive-site.xml

<configuration>

<property>

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

<value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true</value>

</property>

<property>

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

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

</property>

<property>

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

<value>hive</value>

</property>

<property>

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

<value>abc123456</value>

</property>

<property>

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

<value>true</value>

<description>creates necessary schema on a startup if one doesn't exist. set this to false, after creating it once</description>

</property>

<property>

<name>hive.server2.thrift.port</name>

<value>10000</value>

</property>

<property>

<name>hive.server2.authentication</name>

<value>CUSTOM</value>

</property>

</configuration>

注:后面的参数,用于启动server2服务,用于python连接hive的身份认证。

七、主节点上,元数据存储初始化

schematool -initSchema -dbType mysql

注意:提示是completed!,不是failed!

执行后,会自动创建hive等库,如果第二次执行,需要删除自动创建的hive库,然后再执行,否则失败。

八、主节点上,启动测试

输入命令:hive,进入命令行:hive>,则表示安装成功。quit退出。

现在,hive已单机安装成功。下面,还有两件事要做:一是实现hive的分布式,二是与hbase联动。

九、配置分布式hive

1,主节点上启动metastore服务

hive --service metastore &

注意后面的&符合,就因为少打这个符号,我排查错误,折腾了四五个小时。输入命令后,稍等,回车。

RunJar进程
9083端口

启动hiveserver2服务:

hive --service hiveserver2 &

端口10000和10002打开,该服务为python连接而开通。

2,为每个从节点安装hive

注意:从节点不需要安装mysql,远程使用主节点的mysql

(1)复制安装包

(2)配置环境变量:

vim /etc/profile

export PATH=/usr/local/hive-2.3.4/bin:$PATH

source /etc/profile

(3)修改hive-site.xml

vim /usr/local/hive-2.3.4/conf/hive-site.xml

增加:

<property>

<name>hive.metastore.uris</name>

<value>thrift://master:9083</value>

</property>

(4)测试:

在任意节点上输入hive

create database abc;

create table  user_info (user_id int, cid string, ckid string, username string) ;

在其他节点都可以看到,即表示成功。

十、Hive与Hbase整合

Hive与HBase整合的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive-hbase-handler-0.9.0.jar工具类

整合的目的,是利用 HQL 语法实现对 hbase 数据库的增删改查操作,基本原理就是利用两者本身对外的API接口互相进行通信。

本小节日后再讲。


问题:

1,以上操作,并未设置hive表的存储位置,经查询,以abc库为例,存储在/user/hive/warehouse/abc.db/user_info,这是一个本地文件系统,并不是HDFS,是否可以,或不适合存储到HDFS?

2,hive是如何使用分布式计算的?体现在哪里?

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