【大数据】 Hive安装 【学习笔记】

8、Hive - 介绍

Hive - 介绍 - Hive教程 | 编程字典 (codingdict.com)

8.1 Hive - 介绍

  • Hive: 它是一个用来开发SQL类型脚本来执行MapReduce操作的平台。

  • Hive查询语言(HiveQL或HQL)用于MapReduce使用Hive处理结构化数据。

什么是Hive

​ Hive是一个数据仓库基础设施工具,用于处理Hadoop中的结构化数据。它位于Hadoop的顶部,用于汇总大数据,并使查询和分析变得轻松。

最初,Hive是由Facebook开发的,随后Apache软件基金会接手并开发了Apache Hive名下的开源软件。它被不同的公司使用。例如,Amazon在Amazon Elastic MapReduce中使用它。

Hive

  • 不是关系数据库
  • 不是OnLine事务处理(OLTP)的设计
  • 不是用于实时查询和行级更新的语言

Hive的特点

  • 它将模式存储在数据库中并将数据处理成HDFS。
  • 它是为OLAP设计的。
  • 它提供用于查询的SQL类型语言,称为HiveQL或HQL。
  • 它是熟悉的,快速的,可扩展的和可扩展的。

8.2 Hive安装

添加:Hive的安装(超详细)_不秃头小陈同学的博客-CSDN博客_hive安装模式教程

Hive安装教程 - 简书 (jianshu.com)

8.2.1 Hive安装

1、验证JAVA安装

在安装Hive之前,必须在您的系统上安装Java。让我们使用以下命令验证java安装:

$ java -version

2、验证Hadoop安装

在安装Hive之前,Hadoop必须安装在您的系统上。让我们使用以下命令验证Hadoop安装:

$ hadoop version

3、下载 hive-2.3.9 安装包

Index of /dist/hive (apache.org)

Index of /dist/hive/hive-2.1.0 (apache.org)

推荐: Index of /hive/hive-2.3.9 (apache.org)

4、上传后解压

$ tar -zxvf apache-hive-2.3.9-bin.tar.gz -C /opt/module/
$ cd /opt/module/
$ mv apache-hive-2.3.9-bin  hive

5、编写环境变量

[root@hadoop102 apache-hive-2.3.9-bin]$ vim /etc/profile.d/my_env.sh 
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbi

#HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin
  • 使生效
$ source /etc/profile.d/my_env.sh 

6、启动hadoop

[root@hadoop102 lib]$ myhadoop.sh start

7、启动hive

$ hive
# 或
$ cd $HIVE_HOME
$ bin/hive

启动报错 java.lang.NoSuchMethodError: com.google.common.base…

  • 删除hive中低版本的guava-14.0.1.jar包,将hadoop中的guava-27.0-jre.jar复制到hive的lib目录下即可。
$ cp /opt/module/hadoop-3.1.3/share/hadoop/common/lib/guava-27.0-jre.jar  /opt/module/hive/lib
$ mv guava-14.0.1.jar /opt/tmp
[root@hadoop102 lib]$ find guava*
guava-27.0-jre.jar
[root@hadoop102 software]$ tar -zxvf apache-hive-1.2.2-bin.tar.gz  -C /opt/module/
[root@hadoop102 module]$ mv apache-hive-1.2.2-bin/ hive-1.2.2

6、配置Hive

为了用Hadoop配置Hive,你需要编辑 hive-env.sh 文件,该文件被放置在 $ HIVE_HOME/conf 目录。以下命令将重定向到Hive config 文件夹并复制模板文件:

$ cd $HIVE_HOME/conf
$ cp hive-env.sh.template hive-env.sh
$ vim hive-env.sh

通过追加以下行来编辑 hive-env.sh 文件:

export HADOOP_HOME=/opt/module/hadoop-3.1.3

Hive安装已成功完成。现在您需要一个外部数据库服务器来配置Metastore。

配置hive-site.xml

cd /opt/module/hive/conf/
[root@hadoop102 conf]$ vim hive-site.xml
<configuration>
        <property>
                <name>javax.jdo.option.ConnectionURLname>
                <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=truevalue>
                <description>MySQL连接协议 description>
        property>
        <property>
                <name>javax.jdo.option.ConnectionDriverNamename>
                <value>com.mysql.jdbc.Drivervalue>
                <description>JDBC连接驱动description>
        property>
        <property>
                <name>javax.jdo.option.ConnectionUserNamename>
                <value>rootvalue>
                <description>用户名description>
        property>
        <property>
                <name>javax.jdo.option.ConnectionPasswordname>
                <value>123456value>
                <description>密码description>
        property>
configuration>

添加 mysql-connector-java-5.1.48.jar

1、解压

$ cd /opt/software/
$ tar -zxvf mysql-connector-java-5.1.48.tar.gz -C /opt/tmp

2、移动jar包

$ cd /opt/tmp/mysql-connector-java-5.1.48
$ mv mysql-connector-java-5.1.48-bin.jar mysql-connector-java-5.1.48.jar
$ cp mysql-connector-java-5.1.48.jar  /opt/module/hive/lib/

8.2.2 准备Mysql 环境

(41条消息) Linux安装MySQL图文教程(详细)_一个考虑转行送外卖的程序员的博客-CSDN博客_linux安装mysql详细教程

MySQL :: Download MySQL Connector/J (Archived Versions)

MySQL :: Download MySQL Community Server (Archived Versions)

第一步:解压到usr/local/mysql

mkdir /usr/local/mysql
tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar -C /usr/local/mysql

第二步:首先检查当前服务器上是否已经安装有mysql:

rpm -qa|grep -i mysql*

​ 第三步:卸载centos7自带的数据库,因为centOS自带一个老版本的mariadb-libs与当前mysql包的冲突,故需要先卸载,再安装。

yum remove mariadb-libs
cd /usr/local/mysql

[root@hadoop102 mysql]$ ls
mysql-community-client-5.7.28-1.el7.x86_64.rpm           mysql-community-embedded-devel-5.7.28-1.el7.x86_64.rpm
mysql-community-common-5.7.28-1.el7.x86_64.rpm           mysql-community-libs-5.7.28-1.el7.x86_64.rpm
mysql-community-devel-5.7.28-1.el7.x86_64.rpm            mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
mysql-community-embedded-5.7.28-1.el7.x86_64.rpm         mysql-community-server-5.7.28-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.28-1.el7.x86_64.rpm  mysql-community-test-5.7.28-1.el7.x86_64.rpm

第四步:安装mysql-community-common-5.7.28-1.el7.x86_64.rpm (解压的目录)

第五步:安装 mysql-community-libs-5.7.28-1.el7.x86_64.rpm

第六步:安装 mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm

安装perl

第七步:安装mysql-community-client-5.7.28-1.el7.x86_64.rpm

第八步:安装mysql-community-server-5.7.28-1.el7.x86_64.rpm

# 第四步
rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm   
# 第五步
rpm -ivh  mysql-community-libs-5.7.28-1.el7.x86_64.rpm
# 第六步
rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
# 注:此处最好使用该命令安装perl,perl依赖其他26个包,单个下载、 安装很麻烦.
yum install perl
# 第七步
rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm  

# 第八步
yum install net-tools
rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm

第九步:启动mysql服务器才能正常使用

service mysqld restart

第十步:找到root用户的初始密码( U28dguBGG9*T),需要使用如下命令

[root@hadoop102 ~]$ cat /var/log/mysqld.log|grep temp
2022-04-05T05:11:52.507233Z 1 [Note] A temporary password is generated for root@localhost: U28dguBGG9*T
2022-04-05T05:11:54.945284Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables

第十一步:使用root、密码链接到mysql

mysql -hlocalhost -uroot -pU28dguBGG9*T

其他

# 第十二步:降低密码复杂度限制:
mysql> set global validate_password_policy=0;

# 第十三步:降低密码长度限制
mysql> set global validate_password_length=4;

# 第十四步: 修改root用户的初始密码:
mysql> alter user 'root'@'localhost' identified by '123456';

# 第十五步:授权远程连接
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' identified by '123456';

# 第十六步: 刷新权限
mysql> flush privileges;

# 第十七步:打开navicate,新建连接
  • 成功
mysql> exit;
Bye
# 启动MySQL服务:
service mysqld restart

# 停止MySQL服务:
$ systemctl stop mysqld.service

# 设置mysql服务开机自启动:
$ systemctl enable mysqld.service

# 停止mysql服务开机自启动:
$ systemctl disable mysqld.service

8.2.3 初始化元数据库

  • 初始化元数据库准备操作:防止出现Exception in thread “main” java.lang.NoSuchMethodError报错的措施
[root@hadoop102 hive]$ cd /opt/module/hive/lib/
[server@hadoop102 lib]$ mv guava-27.0-jre.jar guava-27.0-jre.bak
[server@hadoop102 lib]$ cd /opt/module/hadoop-3.1.3/share/hadoop/common/lib
[server@hadoop102 lib]$ cp guava-27.0-jre.jar  /opt/module/apache-hive-2.3.9-bin/lib/
  • 初始化元数据库
$ cd /opt/module/hive/lib/
$ schematool -initSchema -dbType mysql -verbose

8.2.4 启动hive

$ hive
hive> show databases;
2021-10-03T20:37:38,543 INFO [main] org.apache.hadoop.hive.conf.HiveConf - Using the default value passed in for log id: c55d738d-5d46-41bf-b069-c0cb0c4c0b08
2021-10-03T20:37:38,544 INFO [main] org.apache.hadoop.hive.ql.session.SessionState - Updating thread name to c55d738d-5d46-41bf-b069-c0cb0c4c0b08 main
OK
default
hive> create table test(id string);
hive> insert into test values ('stu01');
hive> select * from test;
hive> quit;

你可能感兴趣的:(大数据,hadoop,hive,大数据)