ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
**一: 虚拟机准备** 已安装jdk、mysql、hadoop伪分布式或hadoop集群(完全分布式)。 ```shell [root@hadoop101 /]# mysql --version mysql Ver 14.14 Distrib 5.5.40, for Linux (x86_64) using readline 5.1 [root@hadoop101 /]# java -version java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode) [root@hadoop101 /]# hadoop version Hadoop 2.6.0-cdh5.14.2 ``` **二:伪分布式安装** 下载地址 http://archive.cloudera.com/cdh5/cdh/5/ 或者安装apache版本,下载地址 http://archive.apache.org/dist/hive/ <br/> 这里演示安装版本为hive-1.1.0(cdh版)。虽然版本有点旧,但和cdh5.14.2版本的hadoop2.6.0相对应的即为该版本,结合使用,可以避免出现意外的环境冲突。目前最新版本2.x为2.3.7。 3.x版本是结合hadoop3.x使用。本章附录有hive2.3.7的安装教程,有兴趣可以自行安装。) <br/> 需要的软件包:hive-1.1.0-cdh5.14.2.tar.gz <br/> 1、将软件包上传到Linux系统指定目录下: /opt/software 2、解压到指定的目录:/opt/install ```sql [root@hadoop101 software]$ tar -zxvf hive-1.1.0-cdh5.14.2.tar.gz -C /opt/install -- 嫌弃解压后的名字太长,创建一个软链接 [root@hadoop101 software]$ cd /opt/install/ [root@hadoop101 install]$ ln -s /opt/install/hive-1.1.0-cdh5.14.2/ hive ``` 3、配置环境变量 ```sql [root@hadoop101 ~]# vim /etc/profile -- 添加如下两行 export HIVE_HOME=/opt/install/hive export PATH=$PATH:$HIVE_HOME/bin -- 使环境变量生效 [root@hadoop101 ~]# source /etc/profile ``` 4、在 {hive_home}/conf/hive-site.xml 指定hdfs文件系统和MySQL数据库。{hive_home}表示hive的安装目录 ```xml [root@hadoop101 ~]# cd /opt/install/hive/conf/ [root@hadoop101 ~]# vim hive-site.xml <configuration> <!-- 指定hive创建的数据存储在hdfs文件系统中的路径 --> <property> <name>hive.metastore.warehouse.dir</name> <value>/home/hadoop/hive/warehouse</value> </property> <!-- mysql数据库配置 --> <!-- hdfs存储的是大量的数据,而使用mysql来存储hive的元数据,元数据就是hive中创建的各种 库、表、列的具体信息 --> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop101:3306/hive?createDatabaseIfNotExist=true</value> </property> <property>   <name>javax.jdo.option.ConnectionDriverName</name>   <value>com.mysql.jdbc.Driver</value> </property> <!-- mysql的用户名 --> <property>   <name>javax.jdo.option.ConnectionUserName</name>   <value>hive</value> </property> <!-- mysql的登录密码 --> <property>   <name>javax.jdo.option.ConnectionPassword</name>   <value>hive</value> </property> <!-- 配置 Hive 临时文件在hdfs上的存储地址 --> <property> <name>hive.exec.scratchdir</name> <value>/home/hadoop/hive/data/hive-${user.name}</value> <description>Scratch space for Hive jobs</description> </property> <property> <name>hive.exec.local.scratchdir</name> <value>/home/hadoop/hive/data/${user.name}</value> <description>Local scratch space for Hive jobs</description> </property> </configuration> ``` 5、创建hdfs系统文件并修改权限 ```sql -- 记得开启hdfs [root@hadoop101 ~]# hdfs dfs -mkdir /tmp [root@hadoop101 ~]# hdfs dfs -mkdir -p /home/hadoop/hive/warehouse -- 企业生产环境一般权限设置如下 [root@hadoop101 ~]# hdfs dfs -chmod g+w /tmp [root@hadoop101 ~]# hdfs dfs -chmod g+w /home/hadoop/hive/warehouse -- 我是学习的,是测试环境,可以如下设置 [root@hadoop101 ~]# hdfs dfs -chmod -R 777 /tmp [root@hadoop101 ~]# hdfs dfs -chmod -R 777 /home/hadoop/hive/warehouse ``` 6、在{hive_home}/conf/hive-env.sh 修改如下配置 ```sql [root@hadoop101 conf]$ mv hive-env.sh.template hive-env.sh [root@hadoop101 conf]$ vim hive-env.sh -- 修改如下配置 # Set HADOOP_HOME to point to a specific hadoop install directory HADOOP_HOME=/opt/install/hadoop # Hive Configuration Directory can be controlled by: export HIVE_CONF_DIR=/opt/install/hive/conf # Folder containing extra ibraries required for hive compilation/execution can be controlled by: export HIVE_AUX_JARS_PATH=/opt/install/hive/lib ``` 7、修改{hive_home}/conf/hive-log4j.properties ```shell [root@hadoop101 conf]$ mkdir -p /opt/install/hive/logs [root@hadoop101 conf]$ chown -R hadoop:hadoop /opt/install/hive/logs -- 重命名hive-log4j.properties (去掉.template) [root@hadoop101 conf]$ mv hive-log4j.properties.template hive-log4j.properties [root@hadoop101 conf]$ vim hive-log4j.properties --修改hive-log4j.properties以下内容: hive.log.dir=/opt/install/hive/logs ``` 8、上传mysql JDBC的jar到hive的lib下 ```shell -- 上传mysql jdbc驱动包到hive/lib/目录下 -- mysql-connector-java-5.1.44-bin.jar [root@hadoop101 conf]$ cp mysql-connector-java-5.1.44-bin.jar /opt/install/hive/lib/ ``` 9、进入mysql为hive创建一个mysql用户并且赋予权限 ```sql [root@hadoop101 conf]$ mysql -u root -p -- 已经在{hive_home}/conf/hive-site.xml配置了用户名为hive,密码为hive mysql> create user 'hive'@'%' identified by 'hive'; mysql> grant all on *.* to 'hive'@'hadoop101' identified by 'hive'; mysql> set password for hive@hadoop101=password('hive'); mysql> flush privileges; ``` 10、退出mysql,启动hive ```shell (1)启动hive前必须确保已经启动mysql -- 查看MySQL是否开启 [root@hadoop101 rovt]# service mysql status SUCCESS! MySQL running (1597) -- 如果没有开启则开启 [root@hadoop101 rovt]# service mysql start (2)启动Hive前必须启动hdfs和yarn [root@hadoop101 hadoop]# sbin/start-dfs.sh [root@hadoop101 hadoop]# sbin/start-yarn.sh [root@hadoop101 hadoop]# jps 2739 NameNode 2868 DataNode 3926 Jps 3032 SecondaryNameNode 3192 ResourceManager 3322 NodeManager -- 启动hive [root@hadoop101 rovt]# hive ``` 11、验证元数据是否可用 ```shell hive> show databases; OK default Time taken: 8.651 seconds, Fetched: 1 row(s) ``` 出现上面的信息表示启动成功!