1` 安装MySql
在安装之前,需要先安装MySql,Hive默认使用内嵌的DerBy作为元数据库,但是鉴于其单会话限制,这里使用Mysql作为元数据库
检查是否装有Mysql:
$ netstat -tap | grep mysql
如果有输出,说明已经有mysql,如果没有需要安装
* CentOS7环境中默认把ifconfig和netstat取消掉了,ifconfig使用ip addr代替,netstat则需要安装net-tools:yum install net-tools
由于在CentOS7的yum中没有mysql,所以需要使用mysql的repo源进行安装:
下载mysql的repo源:
$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
*如果没有wget命令需要安装,使用yum模式
$ sudo yum -y install wget
安装mysql的rpm包:
$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
$ yum install mysql-community-server
重置密码:
重置密码前需要先登录,安装完成的默认用户为root
$ mysql -u root
* 如果出现了‘ERROR 2002 (HY000): Can‘t connect to local MySQL server through s ocket ‘/var/lib/mysql/mysql.sock‘ (2)’的错误,一般原因是因为mysql服务并没有正常 运行,解决办法:
1· mysql服务没有正常运行。检查端口是否打开:# lsof -i:3306 (最好cd切换至根目录,如果没有lsof命令,先执行 yum install lsof 安装) ,如果发现 mysql服务没有正常运行,那么执行 service mysqld start 开启服务
2· socket文件路径在配置文件中设置不完整:http://aiezu.com/article/45.html
重启服务:
$ service mysqld restart
重设密码:
mysql> use mysql;
mysql> update user set password=password(‘123456’) where user=’root’
mysql> exit;
开放3306端口:
开放3306端口以便远程登录mysql,但是在CentOS7中需要注意,并不是使用iptables来配置,而是使用了firewalld防火墙,使用规则如下:
查询是否开启了3306端口:
# firewall-cmd --query-port=3306/tcp
no
开启方法:
# firewall-cmd --add-port=3306/tcp
success
2· 安装Hive
先下载包,网上都有,直接搜‘apache-hive-2.1.0-bin.tar.gz 下载’ 就可以了,用sudo rz -be 上传,记得一定要root权限
先解压安装包
* 如果在执行tar zxvf ./share/apache-hive-2.1.0-bin.tar.gz ./hive的时候,出现:‘tar:归档中找不到 tar: 由于前次错误,将以上次的错误状态退出’错误,那么你就需要加 上参数-C 并且目标目录修改为绝对路径的目录即可,也就是说将命令修改为:tar zxvf ./share/apache-hive-2.1.0-bin.tar.gz -C /usr/local/hive/
配置bashrc:
$ ~/.bashrc
在文件追加:
# Hive Environment Variables
export HIVE_HOME=/usr/local/hive/hive-2.1.0
export PATH=$PATH:$HIVE_HOME/bin
修改Hive配置文件:
cd /usr/local/hive/hive-2.1.0/conf
复制hive-default.xml.template文件两次,将文件名分别更改为,hive-default.xml和 hive-site.xml,hive-default.xml为hive默认配置文件,不需要修改,hive-site.xml为用户自定义配置文件,在启动hive时用户自定义修改的部分会覆盖默认配置
再cd ../进入Hive主文件夹,新建warehouse、tmp、log文件夹
注意:这三个文件夹必须赋予777权限!否则在启动时会报错:permission dendaied
修改hive-site.xml中的对应路径:
<property>
<name>hive.metastore.warehouse.dir</name>
<value>修改为warehouse文件夹路径(例如:/usr/local/hadoop/hive/warehouse)
</value>
<description>location of default database for the warehouse</description>
</property>
<property>
<name>hive.querylog.location</name>
<value>修改为log文件夹的路径(例如:/usr/local/hadoop/hive/log)</value>
<description>
Location of Hive run time structured log file
</description>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>修改为tmp文件夹的地址(例如:/usr/local/hadoop/hive/tmp</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
复制hive-env.sh.template更改名字为hive-env.sh
修改hive-env.sh的内容:
将export HADOOP_HEAPSIZE=1024前面的‘#’去掉,当然可以根据自己的环境对这个默认的1024进行优化;
将export HADOOP_HOME前面的‘#’号去掉,并让它指向所安装hadoop的目录,例如: /usr/local/hadoop
export HIVE_CONF_DIR、export HIVE_AUX_JARS_PATH同理,配置相应路径。
将export HIVE_CONF_DIR=/usr/local/hadoop/hive/conf,并且把‘#’号去掉;
将export HIVE_AUX_JARS_PATH=/usr/local/hadoop/hive/lib,并且把‘#’号去掉
初始化元数据库:
1· 为Hive建立相应的Mysql账户,并赋予权限:
注意:这里一定要写
'hive'@'localhost'
否则会出现 MySQL 2000的报错,Hive用户会指向 % 地址上去
mysql -uroot -pmysql
mysql> CREATE USER 'hive'@'localhost' IDENTIFIED BY 'mysql';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;
mysql> flush privileges;
mysql> exit;
$ mysql -uhive -pmysql
mysql> create database hive;
如果在执行mysql> create database hive;出现错误:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql',通过''@'localhost' 可以看出来,是因为存在为空的 ( 匿名 ) 账户, 解决办法:
1.关闭mysql
# service mysqld stop
2.屏蔽权限
# mysqld_safe --skip-grant-table
3.新开起一个终端输入
# mysql -u root mysql
mysql> delete from user where USER='';
mysql> FLUSH PRIVILEGES;//记得要这句话,否则如果关闭先前的终端,又会出现 原来的错误
mysql> \q
2· 修改hive-site.xml中原本为derby的配置项
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://远程mysql服务器IP地址:3306/hivedb</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hivedb(mysql用户名)</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hivedb(mysql用户密码)</value>
</property>
3· 引入JDBC驱动包
因为上面配置了com.mysql.jdbc.Driver,所以需要引入mysql-connector-java-5.1.27.jar, 将jar包放入hive目录下的lib文件夹中
下载地址:http://pan.baidu.com/s/1pLsA48F
4· 进入hive目录下的bin目录,运行命令:
./schematool -initSchema -dbType mysql
5· 输入hive,启动