大数据学习
bigdata learning
Toggle navigation
大数据学习
主页
openGauss数据库
Flume
MongoDB
Hadoop
数据库实验
Kafka
Zookeeper
Hbase
Manual
Spark
Neo4j
InfluxDB
RabbitMQ
Flink
About Me
归档
标签
02-Hive安装
Hive
2022-10-31 11:25:34
23
0
0
bigdata
Hive
#安装hive,并配置mysql作为元数据库 hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。 ## 一、安装hive 安装hive前需要安装Hadoop,方法可参考[Hadoop安装教程](/blog/post/bigdata/1-Hadoop安装教程) **1\. 下载并解压hive源程序** > 本实验以Ubuntu18作为示例,演示`hive-1.2.1`的安装过程 [hive-1.2.1下载地址](http://www.apache.org/dyn/closer.cgi/hive/) [百度网盘](https://pan.baidu.com/s/1T5QA-6ANSx4JH8XwqYxxyg) 提取码:j6r9 将`hive-1.2.1`安装包`apache-hive-1.2.1-bin.tar.gz`下载至/opt/software ```shell nbu@ecs:/opt/software$ sudo tar -zxvf ./apache-hive-1.2.1-bin.tar.gz -C /usr/local # 解压到/usr/local中 nbu@ecs:/opt/software$ cd /usr/local/ nbu@ecs:/usr/local$ sudo mv apache-hive-1.2.1-bin hive # 将文件夹名改为hive nbu@ecs:/usr/local$ sudo chown -R nbu:nbu hive # 修改文件权限 ``` **2\. 配置环境变量** 为了方便使用,我们把hive命令加入到环境变量中去,编辑~/.bashrc文件`vim ~/.bashrc`,在最前面一行添加: ```bash export HIVE_HOME=/usr/local/hive export PATH=$PATH:$HIVE_HOME/bin export CLASSPATH=$CLASSPATH:/usr/local/hive/lib/* ``` 保存退出后,运行`source ~/.bashrc`使配置立即生效。 **3\. 修改`/usr/local/hive/conf`下的hive-site.xml** ```bash nbu@ecs:/usr/local/hive$ cd conf/ #将hive-default.xml.template重命名为hive-default.xml nbu@ecs:/usr/local/hive/conf$ cp hive-default.xml.template hive-default.xml #新建一个文件touch hive-site.xml nbu@ecs:/usr/local/hive/conf$ touch hive-site.xml ``` 在`hive-site.xml`中粘贴如下配置信息: ```xml <?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?allowPublicKeyRetrieval=true&createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf8&useSSL=false</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> <description>password to use against metastore database</description> </property> </configuration> ``` ## 二、安装并配置mysql **1.Ubuntu下mysql的安装请参考**:[Ubuntu安装MySQL]() **安装mysql jdbc** 下载mysql jdbc 包[下载地址](https://pan.baidu.com/s/1EwkRdMxI7rgOjJMnqfVxuA) 提取码:n1kx 将`mysql-connector-java-5.1.40.tar.gz`下载至/opt/software/ ```shell nbu@ecs:~$ cd /opt/software nbu@ecs:/opt/software$ tar -zxvf mysql-connector-java-5.1.40.tar.gz #解压 #将mysql-connector-java-5.1.40-bin.jar拷贝到/usr/local/hive/lib目录下 nbu@ecs:/opt/software$ cp mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar /usr/local/hive/lib ``` **3\. 启动并登陆mysql shell** ```shell nbu@ecs:/opt/software$ sudo service mysql start #启动mysql服务 nbu@ecs:/opt/software$ mysql -u root -p #登陆shell界面 ``` **4\. 新建hive数据库** 。 ```mysql mysql> create database hive; Query OK, 1 row affected (0.00 sec) #这个hive数据库与hive-site.xml中localhost:3306/hive的hive对应,用来保存hive元数据 ``` **5\. 配置mysql允许hive接入:** 建立账号名hive密码为hive的账号 ```mysql #将所有数据库的所有表的所有权限赋给hive用户,后面的hive是配置hive-site.xml中配置的连接密码 mysql> grant all on *.* to hive@localhost identified by 'hive'; Query OK, 0 rows affected, 1 warning (0.00 sec) #注意:在MySQL 8.0及以后的版本中,GRANT语句的语法发生了变化,不再支持在GRANT语句中直接设置密码。您需要先创建用户,然后再授予相应的权限。 mysql>CREATE USER 'hadoop'@'%' IDENTIFIED BY 'new_password'; mysql>GRANT ALL PRIVILEGES ON . TO 'hadoop'@'%'; mysql>FLUSH PRIVILEGES; #刷新mysql系统权限关系表 mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> exit Bye ``` > 若出现The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement问题 需要flush privileges;先刷新一下权限表。 **6\. 启动hive** 启动hive之前,请先启动hadoop集群。 ```shell #启动hadoop nbu@ecs:~$ /usr/local/hadoop/sbin/start-all.sh #启动hive nbu@ecs:~$ /usr/local/hive/bin/hive ```  开启 metastore ```bash nbu@ecs:~$ /usr/local/hive/bin/hive --service metastore & ``` >Metastore服务是客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可。 开启 hiveserver2 ```bash nbu@ecs:~$ /usr/local/hive/bin/hive --service hiveserver2 & ``` >HiveServer2是一个服务接口,能够允许远程的客户端去执行SQL请求且得到检索结果。 > 若出现`cannot access '/usr/local/spark/lib/spark-assembly-*.jar': No such file or directory` 原因是jar包在新版本的spark中的位置已经改变 需要将/usr/local/hive/bin/hive 文件中的 sparkAssemblyPath=`ls ${SPARK_HOME}/lib/spark-assembly-*.jar` 修改为:sparkAssemblyPath=`ls ${SPARK_HOME}/jars/*.jar` 使用mysql作为元数据库时登陆 <font color=red>解决Hive启动,Hive metastore database is not initialized的错误。</font>出错原因:重新安装Hive和MySQL,导致版本、配置不一致。在终端执行如下命令: ```shell $ schematool -dbType mysql -initSchema ``` Hive 分布现在包含一个用于 Hive Metastore 架构操控的脱机工具,名为 schematool.此工具可用于初始化当前 Hive 版本的Metastore 架构。此外,其还可处理从较旧版本到新版本的架构升级。
上一篇:
02-HBase-Shell命令
下一篇:
02-InfluxDB入门指南
文档导航