安装Apache Hive前提是要先安装hadoop集群,并且hive只需要在hadoop的namenode节点集群里安装即可(需要再有的namenode上安装),可以不在datanode节点的机器上安装。还需要说明的是,虽然修改配置文件并不需要把hadoop运行起来,但是本文中用到了hadoop的hdfs命令,在执行这些命令时你必须确保hadoop是正在运行着的,而且启动hive的前提也需要hadoop在正常运行着,所以建议先把hadoop集群启动起来。
有关如何在CentOS7.0上安装hadoop集群请参考:CentOS7.0下Hadoop2.7.3的集群搭建
下载地址:http://hive.apache.org/downloads.html
点击下图中的链接:
点击下图中的某个下载地址,优先选择国内源:
我下载的上2.1.1版本,如下图所示:
进入目录$HIVE_HOME/conf,将hive-default.xml.template文件复制一份并改名为hive-site.xml
#进入hive配置文件目录$HIVE_HOME/conf [root@apollo hive]# cd $HIVE_HOME/conf #拷贝并重命名 [root@apollo conf]# cp hive-default.xml.template hive-site.xml使用hadoop新建hdfs目录,因为在hive-site.xml中有如下配置:
<property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> <description>location of default database for the warehouse</description> </property> <property>执行hadoop命令新建/user/hive/warehouse目录:
#新建目录/user/hive/warehouse [root@apollo conf]# $HADOOP_HOME/bin/hadoop dfs -mkdir -p /user/hive/warehouse #给新建的目录赋予读写权限 [hadoop@apollo conf]$ sh $HADOOP_HOME/bin/hdfs dfs -chmod 777 /user/hive/warehouse #查看修改后的权限 [hadoop@apollo conf]$ sh $HADOOP_HOME/bin/hdfs dfs -ls /user/hive Found 1 items drwxrwxrwx - impala supergroup 0 2017-06-06 01:46 /user/hive/warehouse #运用hadoop命令新建/tmp/hive目录 [hadoop@apollo conf]$ $HADOOP_HOME/bin/hdfs dfs -mkdir -p /tmp/hive #给目录/tmp/hive赋予读写权限 [hadoop@apollo conf]$ $HADOOP_HOME/bin/hdfs dfs -chmod 777 /tmp/hive #检查创建好的目录 [hadoop@apollo conf]$ $HADOOP_HOME/bin/hdfs dfs -ls /tmp Found 1 items drwxrwxrwx - hadoop supergroup 0 2017-06-06 05:06 /tmp/hive将hive-site.xml文件中的${system:java.io.tmpdir}替换为hive的临时目录,例如我替换为$HIVE_HOME/tmp,该目录如果不存在则要自己手工创建,并且赋予读写权限。
[root@apollo conf]# cd $HIVE_HOME [root@apollo hive]# mkdir tmp配置文件hive-site.xml:
将文件中的所有 ${system:java.io.tmpdir}替换成/usr/local/hive/tmp将文件中所有的${system:user.name}替换为rootCentOS7.0安装mysql请参考:CentOS7 rpm包安装mysql5.7
搜索javax.jdo.option.connectionURL,将该name对应的value修改为MySQL的地址:
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.56.181:3306/hive?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>搜索javax.jdo.option.ConnectionDriverName,将该name对应的value修改为MySQL驱动类路径:
<property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property>搜索javax.jdo.option.ConnectionUserName,将对应的value修改为MySQL数据库登录名:
<property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> <description>Username to use against metastore database</description> </property>搜索javax.jdo.option.ConnectionPassword,将对应的value修改为MySQL数据库的登录密码:
<property> <name>javax.jdo.option.ConnectionPassword</name> <value>Love88me</value> <description>password to use against metastore database</description> </property>搜索hive.metastore.schema.verification,将对应的value修改为false:
<property> <name>hive.metastore.schema.verification</name> <value>false</value> <description> Enforce metastore schema version consistency. True: Verify that version information stored in is compatible with one from Hive jars. Also disable automatic schema migration attempt. Users are required to manually migrate schema after Hive upgrade which ensures proper metastore schema migration. (Default) False: Warn if the version information stored in metastore doesn't match with one from in Hive jars. </description> </property>
如下图:
执行成功后,查看mysql数据库:
如下图:
说明:ID和name直接是TAB键,不是空格,因为在上面创建表的语句中用了terminated by ‘\t’所以这个文本里id和name的分割必须是用TAB键(复制粘贴如果有问题,手动敲TAB键吧),还有就是行与行之间不能有空行,否则下面执行load,会把NULL存入表内,该文件要使用unix格式,如果是在windows上用txt文本编辑器编辑后在上载到服务器上,需要用工具将windows格式转为unix格式,例如可以使用Notepad++来转换。
在hadoop的namenode上查看:
