安装hive,需要先安装配置好Hadoop,可以看之前的Hadoop安装配置笔记。先启动Hadoop,接下来的操作都是在主节点中进行,我的主节点机器主机名是node01。
一、将hive解压,并在Hadoop的core-site.xml中整合hive。 1 2 tar -zxvf apache-hive-3.1.2-bin.tar.gz vim /opt/hadoop/hadoop/etc/hadoop/core-site.xml
1 2 3 4 5 6 7 8 9 10 11 <!--整合 prepare for hive --> <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property>
二、检查Hadoop和hive的guava版本是否有差异。 1 2 3 4 5 6 7 8 9 10 11 12 13 cd /opt/hadoop/hadoop/share/hadoop/common/libls | grep guavacd /opt/hive/apache-hive-3.1.2-bin/libls | grep guavacp /opt/hadoop/hadoop/share/hadoop/common/lib/guava-27.0-jre.jar /opt/hive/apache-hive-3.1.2-bin/librm -rf /opt/hive/apache-hive-3.1.2-bin/lib/guava-19.0.jar
三、添加数据驱动包 将mysql的java驱动包 * 上传到 /opt/hive/apache-hive-3.1.2-bin/lib 。
驱动包下载地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java
1 2 3 cp mysql-connector-java-8.0.25.jar /opt/hive/apache-hive-3.1.2-bin/lib
四、添加环境变量
1 2 3 4 5 6 export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64export HIVE_HOME=/opt/hive/apache-hive-3.1.2-binexport HIVE_CONF_DIR=${HIVE_HOME} /confexport HIVE_AUX_JARS_PATH=/opt/hive/apache-hive-3.1.2-bin/libexport PATH=.:${JAVA_HOME} /bin:${SCALA_HOME} /bin:${SPARK_HOME} /bin:${HADOOP_HOME} /bin:${ZK_HOME} /bin:${HBASE_HOME} /bin:${HIVE_HOME} /bin:$PATH
五、在conf中更改配置 1 vim /opt/hive/apache-hive-3.1.2-bin/conf/hive-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 <configuration> <property> <!--mysql 搭建在第一台机器上,用到的database名字就叫hive(这个是定好的)。--> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://node01:3306/hive?createDatabaseIfNotExist=true &useSSL=false </value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <!--hive中要用到mysql,这里填写 mysql的用户名。我先就在mysql中创建了一个名叫hive的用户。 --> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> </property> <!--上面mysql用户名对应的 mysql数据库登录密码(需要修改成密码) --> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> </property> <!--远程模式部署metastore服务地址,hive就安装在node01上,用thrift协议对外,端口9083 --> <property> <name>hive.metastore.uris</name> <value>thrift://node01:9083</value> </property> <!--关闭元数据存储授权--> <property> <name>hive.metastore.event.db.notification.api.auth</name> <value>false </value> </property> <!--关闭元数据存储版本验证--> <property> <name>hive.metastore.schema.verification</name> <value>false </value> </property> </configuration>
2、修改hive-env.sh 1 2 cp hive-env.sh.template hive-env.shvim hive-env.sh
1 2 3 export HADOOP_HOME=/opt/hadoop/hadoopexport HIVE_CONF_DIR=/opt/hive/apache-hive-3.1.2-bin/confexport HIVE_AUX_JARS_PATH=/opt/hive/apache-hive-3.1.2-bin/lib
1 2 3 cd /opt/hive/apache-hive-3.1.2-bin/binschematool -initSchema -dbType mysql -verbos
判断是否初始化metadata成功的方法,就是去mysql看看有没有新生成一个叫hive的database,同时hive 的database中是否有74张表。
但是此时直接在bin运行 hive的命令会报错
1 2 3 4 cd /opt/hive/apache-hive-3.1.2-bin/binhive show databases;
从上图可知报错原因,要先手动打开metastore服务。不然直接启动hive,链接不到mysql中的元数据。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 cd /opt/hive/apache-hive-3.1.2-bin/binhive --service metastore nohup hive --service metastore & jps ll hive --service metastore --hiveconf hive.root.logger=DEBUG,console
八、在从属机器使用hive 和beeline 客户端 在node02机器上重复上面操作,或者node01直接发送到node02。
1 2 3 cd /optscp -r /opt/hive node02:/opt
1 2 vim /opt/hive/apache-hive-3.1.2-bin/conf/hive-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 <configuration> <!--远程模式部署metastore服务地址,hive就安装在node01上,用thrift协议对外,端口9083 --> <property> <name>hive.metastore.uris</name> <value>thrift://node01:9083</value> </property> <!-- <property> <!--mysql 搭建在第一台机器上,用到的database名字就叫hive(这个是定好的)。--> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://node01:3306/hive?createDatabaseIfNotExist=true &useSSL=false </value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <!--hive中要用到mysql,这里填写 mysql的用户名。我先就在mysql中创建了一个名叫hive的用户。 --> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> </property> <!--上面mysql用户名对应的 mysql数据库登录密码(需要修改成密码) --> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> </property> <!--关闭元数据存储授权--> <property> <name>hive.metastore.event.db.notification.api.auth</name> <value>false </value> </property> <!--关闭元数据存储版本验证--> <property> <name>hive.metastore.schema.verification</name> <value>false </value> </property> --> </configuration>
node02 再个填环境变量。
1 2 3 4 5 6 7 8 9 10 vim /etc/profile export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64export HIVE_HOME=/opt/hive/apache-hive-3.1.2-binexport HIVE_CONF_DIR=${HIVE_HOME} /confexport HIVE_AUX_JARS_PATH=/opt/hive/apache-hive-3.1.2-bin/libexport PATH=.:${JAVA_HOME} /bin:${SCALA_HOME} /bin:${SPARK_HOME} /bin:${HADOOP_HOME} /bin:${ZK_HOME} /bin:${HBASE_HOME} /bin:${HIVE_HOME} /bin:$PATH source /etc/profile
1、hive 操作同上。
2、beeline
开启beeline前要先在主机器node01 打开 metastore、hiveserver2 两个服务。
1 2 /opt/hive/apache-hive-3.1.2-bin/bin/hive --service metastore /opt/hive/apache-hive-3.1.2-bin/bin/hive --service hiveserver2
node02 开启beeline客户端,并远程登录到node01 的hiveserver2。
1 2 3 /opt/hive/apache-hive-3.1.2-bin/bin/beeline ! connect jdbc:hive2://node01:10000
beeline界面确实是要漂亮一些。