赞
踩
Hive起源于Facebook(一个美国的社交服务网络)。Facebook有着大量的数据,而Hadoop是一个开源的MapReduce实现,可以轻松处理大量的数据。
但是MapReduce程序对于Java程序员来说比较容易写,但是对于其他语言使用者来说不太方便。此时Facebook最早地开始研发Hive,它让对Hadoop使用SQL查询(实际上SQL后台转化为了MapReduce)成为可能,那些非Java程序员也可以更方便地使用。hive最早的目的也就是为了分析处理海量的日志。
Hive是一个数据仓库技术,一次将一个SQL语句转化为 Mapreduce 代码,然后对代码进行编译,最后优化执行。
Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。
Hive做为 Hadoop 的数据仓库处理工具,它所有的数据都存储在Hadoop 兼容的文件系统中。
Hive将元数据存储在关系数据库管理系统( RDBMS )中,一般常用 MySQL和Derby。默认情况下,Hive 元数据保存在内嵌的 Derby数据库中,只能允许一个会话连接,只适合简单的测试。实际生产环境中不适用, 为了支持多用户会话,则需要一个独立的元数据库,使用MySQL 作为元数据库,Hive内部对 MySQL 提供了很好的支持。
Hive的表= HDFS的目录
Hive数据=HDFS文件
嵌入模式 本地模式 远程模式
安装MySQL:yum -y install mysql-community-server
重载所有修改过的配置文件:systemctl daemon-reload
开启服务:systemctl start mysqld
开机自启:systemctl enable mysqld
安装完毕后,启动MySQL会在/var/log/mysqld.log 文件中会自动生成一个随机的密码,我们需要先取得这个随机密码,以用于登录 MySQL 服务端。
获取初密码:grep “temporary password" /var/log/mysqld.log
登陆MySQL:mysql -uroot -p
MySQL5.6.6版本之后增加了密码强度验证插件,相关参数设置的较为严格。 使用了该插件会检查设置的密码是否符合当前设置的强度规则,若不满足则拒绝设置。
设置密码强度为低级: set global validate_password_policy=0;
设置密码长度: set global validate_password_length=4;
修改密码为123456: alter user 'root'@'localhost' identified by '123456';
退出:\q
以新密码登陆MySQL:mysql –uroot –p123456
创建用户并设定密码: create user ‘root’@’localhost’ identified by ‘123456’;
为用户赋予操作数据库所有权限:grant all privilages on *.* to ‘root’@’%’identified with grant option;
使操作生效:flush privileges
建立文件夹hive:mkdir -p /usr/hive
解压Hive安装包:tar –zxvf /opt/soft/apache-hive-2.1.1-bin.tar.gz –C /usr/hive
将hive复制到slave1中:
scp -r /usr/hive/apache-hive-2.1.1-bin root@slave1:/usr/hive/apache-hive-2.1.1-bin
配置环境变量(注意生效环境变量):
#set hive
export HIVE_HOME=/usr/hive/apache-hive-2.1.1-bin
export PATH=$PATH:$HIVE_HOME/bin
因为服务器端需要和Mysql通信,所以服务器端的Hive_Home/conf目录下需要有Mysql的lib安装包,安装包在slave2中,将其复制到slave1中。
scp /lib/mysql-connector-java-5.1.5-bin.jar slave1:/usr/hive/apache-hive-2.1.1-bin/lib
修改hive-env.sh中HADOOP_HOME环境变量
slave1作为服务器端。需要相关连接的数据库的配置。比如ip、端口、数据库用户名、密码等。
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name> <value>/user/hive_remote/warehouse</value> </property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=true</value>
<property>
</configuration>
由于客户端需要和Hadoop通信,所以需要更改Hadoop中jline的版本。即保留一个高版本的jline jar包,从hive的lib包中拷贝到Hadoop中lib位置为/usr/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib。
cp /usr/hive/apache-hive-2.1.1-bin/lib/jline-2.12.jar /usr/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/
bin/hive --service metastore
bin/hive
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。