前言:
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行
运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析
Hive元数据保存在内嵌的 Derby数据库中,只能允许一个会话连接,只适合简单的测试。实际生产环境中不使用,为了支持多用户会话,
则需要一个独立的元数据库,使用MySQL作为元数据库,Hive内部对MySQL提供了很好的支持。
一、系统环境
os : Ubuntu 16.04 LTS 64bit jdk : 1.8.0_111 hadoop : 2.7.3 mysql : 5.7.21 hive : 2.1.0
在配置hive之前,要先安装Hadoop
二、安装并配置MySQL
2.1 安装MYSQL
a、安装服务端
sudo apt-get install mysql-server
b、安装客户端
sudo apt-get install mysql-client
c、查看MySQL是否安装成功
sudo netstat -tap | grep mysql
查询结果如下图所示,表示安装成功
d、将mysql-connector-java-***.jar驱动,复制到hive安装目录下的lib下
e 、将$HADOOP_HOME/share/hadoop/yarn/lib下的jline*.jar替换为$HIVE_HOME/lib/jline-2.12.jar
附加说明,
默认root密码为root
sudo /etc/init.d/mysql start 这是启动mysql服务
sudo /etc/init.d/mysql restart 这是重启mysql服务
sudo /etc/init.d/mysql stop 这是停止mysql服务
2.2 配置远程访问
a、编辑配置文件
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf 将bind-address = 127.0.0.1注释(默认情况下MySQL只允许本地登录)
b、修改用户权限
mysql -u root -p --远程访问 mysql -h 192.168.0.201 -P 3306 -u root -p123 123为root用户密码
grant all privileges on *.* to root@'%' identified by 'root' with grant option;
flush privileges; --刷新权限信息,让我们所作的设置马上生效
/etc/init.d/mysql restart --重启mysql服务
aaa: *.*:第一个*代表数据库名;第二个*代表表名。这里的意思是所有数据库里的所有表都授权给用户。root:授予root账号。“%”:表示授权的用户IP可以指定,这里代表任意的IP地址都能访问MySQL数据库。“password”:分配账号对应的密码,这里密码自己替换成你的 mysql root帐号 密码。
2.3创建元信息数据库
a、创建hive用户
mysql -u root -p
create user 'hive' identified by 'hive';
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;
b、使用hive账号建立Hive专用的元数据库hive
mysql -u hive -p hive
create database hive;
三、hive的安装配置
3.1 下载:hive2.1.0下载地址
sudo tar -xzf apache-hive-2.1.0-bin.tar.gz -C /usr/local#解压到/usr/local目录下
sudo mv apache-hive-2.1.0-bin/ hive #重命名
sudo chown -R hadoop hive #把hive的所在组改为hadoop
3.2 配置环境变量
vim ~/.bashrc
export HIVE_HOME=/usr/local/hive export HCAT_HOME=$HIVE_HOME/hcatalog export HIVE_CONF=$HIVE_HOME/conf export PATH=$PATH:$HIVE_HOME/bin
source ~/.bashrc 使配置生效
3.2 配置hive-site.xml
修改hive-site.xml中的部分内容,将对应的name修改成下面的value:
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?characterEncoding=UTF-8&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.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>
将hvie-site.xml中的${system:java.io.tmpdir}全部替换为/usr/local/hive/tmp,将${system:user.name}全部替换为${user.name}
四、启动hive
4.1、schematool 命令来执行初始化操作
从 Hive 2.1 版本开始, 我们需要先运行 schematool 命令来执行初始化操作,
schematool -dbType mysql -initSchema
4.2、hive客户端启动
hive操作的命令基本与mysql一致。
其他相关链接:linux下忘记mysql密码的几种方法
参考:
http://www.bubuko.com/infodetail-2523113.html
https://www.cnblogs.com/zlslch/p/6084704.html