说明:安装hive前提是要先安装hadoop集群,而且hive只须要再hadoop的namenode节点集群里安装便可(须要再全部namenode上安装),能够不在datanode节点的机器上安装。另外还须要说明的是,虽然修改配置文件并不须要你已经把hadoop跑起来,可是本文中用到了hadoop命令,在执行这些命令前你必须确保hadoop是在正常跑着的,并且启动hive的前提也是须要hadoop在正常跑着,因此建议你先将hadoop跑起来在按照本文操做。html
如何安装和启动hadoop集群,请参考:java
https://www.cnblogs.com/doubleuncle/p/10375454.htmlnode
1.安装hivemysql
下载hivesql
地址:http://hive.apache.org/downloads.html数据库
使用SecureFX将hive上传至hadoop1的/opt/hive文件夹中apache
解压文件函数
#tar -zxvf apache-hive-2.3.4-bin.tar.gzoop
修改配置文件测试
#vi /etc/profile
在任意位置添加如下内容
export JAVA_HOME=/opt/java/jdk1.8.0_201
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/opt/hadoop/hadoop-2.6.5
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADDOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=$PATH:$HADOOP_HOME/bin
export HIVE_HOME=/opt/hive/apache-hive-2.3.4-bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
export CLASSPATH=$:CLASSPATH:$HIVE_HOME/lib/
export PATH=$PATH:$HIVE_HOME/bin:$HIVE_HOME/sbin
重启profile文件
#source /etc/profile
hive配置文件修改:
新建并修改hive-site.xml文件
#cp /opt/hive/apache-hive-2.3.4-bin/conf/hive-default.xml.template /opt/hive/apache-hive-2.3.4-bin/conf/hive-site.xml
修改这个新建的hive-site.xml文件
【
修改hive-site.xml中的临时目录
将hive-site.xml文件中的全部的${system:java.io.tmpdir}替换为hive的临时目录(例如我替换为/opt/hive/tmp,该目录若是不存在则要本身手工建立,而且赋予读写权限)
将hive-site.xml文件中的全部的${system:user.name}都替换为root
修改hive-site.xml数据库相关的配置
搜索javax.jdo.option.ConnectionURL,将该name对应的value修改成MySQL的地址,例如我修改后是:
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop1:3306/hive?createDatabaseIfNotExist=true</value>
搜索javax.jdo.option.ConnectionDriverName,将该name对应的value修改成MySQL驱动类路径,例如个人修改后是:
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com/mysql/cj/jdbc/Driver</value>
</property>
(
tips:
jdk7+老版5.0驱动请填入com/mysql/jdbc/Driver
jdk8+新版6.0驱动请填入com/mysql/cj/jdbc/Driver
我这里使用的驱动是mysql-connector-java-6.0.6.jar
)
搜索javax.jdo.option.ConnectionUserName,将对应的value修改成MySQL数据库登陆名:
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
搜索javax.jdo.option.ConnectionPassword,将对应的value修改成MySQL数据库的登陆密码:
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
搜索hive.metastore.schema.verification,将对应的value修改成false:
<name>hive.metastore.schema.verification</name>
<value>false</value>
】
使用hadoop新建hdfs目录
【
由于在hive-site.xml中有这样的配置:
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
因此要让hadoop新建/user/hive/warehouse目录,执行命令:
$HADOOP_HOME/bin/hadoop fs -mkdir -p /user/hive/warehouse
给刚才新建的目录赋予读写权限,执行命令:
$HADOOP_HOME/bin/hadoop fs -chmod 777 /user/hive/warehouse
让hadoop新建/tmp/hive/目录,执行命令:
$HADOOP_HOME/bin/hadoop fs -mkdir -p /tmp/hive/
给刚才新建的目录赋予读写权限,执行命令:
$HADOOP_HOME/bin/hadoop fs -chmod 777 /tmp/hive
】
检查hdfs目录是否建立成功
【
$HADOOP_HOME/bin/hadoop fs -ls /user/hive/
$HADOOP_HOME/bin/hadoop fs -ls /tmp/
】
新建hive-env.sh文件并进行修改
【
将hive-env.sh.template文件复制一份,而且更名为hive-env.sh
cp /opt/hive/apache-hive-2.3.4-bin/conf/hive-env.sh.template /opt/hive/apache-hive-2.3.4-bin/conf/hive-env.sh
打开hive-env.sh配置而且添加如下内容
export HADOOP_HOME=/opt/hadoop/hadoop-2.6.5
export HIVE_CONF_DIR=/opt/hive/apache-hive-2.3.4-bin/conf
export HIVE_AUX_JARS_PATH=/opt/hive/apache-hive-2.3.4-bin/lib
】
2.安装mysql(由于hive自带关系型数据库derby不够稳定,建议使用mysql数据库)
下载hive
地址:https://dev.mysql.com/downloads/mysql/5.6.html#downloads
使用SecureFX将mysql上传至hadoop1的/opt/mysql文件夹中
解压文件
#tar -zxvf MySQL-5.6.43-2.sles12.x86_64.rpm-bundle.tar
安装文件
#rpm -ivh *.rpm
从新启动机器
#reboot
进入mysql数据库,修改root用户密码
#set password for root@localhost = password('root');
修改远程登录权限
#update user set host = '%' where user = 'root';
#flush privileges;
3.启动和测试
对MySQL数据库进行初始化
进入到hive的bin目录
#cd /opt/hive/apache-hive-2.1.1-bin/bin
对数据库进行初始化
#./schematool -initSchema -dbType mysql
(
tips:
[INFO] Unable to bind key for unsupported operation: backward-delete-word
……
报错缘由暂未找到,但显示schemaTool completed说明数据化初始已成功
)
执行成功后,hive数据库里已经有一堆表建立好了
启动hive
进入到hive的bin目录
#cd /opt/hive/apache-hive-2.1.1-bin/bin
执行hive脚本进行启动
#./hive
执行简单命令测试
查看函数的命令
#show functions;
查看sum函数的详细信息
#desc function sum;
新建数据库db_hive_edu
create database db_hive_edu;