Centos7下Hadoop集群的mysql5.7以及hive3.1搭建

Hadoop中HDFS、Hive 和 HBase三者之间的关系

HDFS(Hadoop Distributed File System)、Hive 和 HBase 是 Hadoop 生态系统中三个重要的组件,它们各自解决了大数据存储和处理的不同层面的问题。我们用大白话来解释这三个组件之间的关系:

HDFS - 数据的仓库: HDFS 是一个分布式文件系统,就像是一个巨大的仓库,专门用来存储海量的数据。它把数据分成很多小块,分布在集群中的许多服务器上,这样即使数据量非常大,也能快速访问和处理。HDFS 提供了高容错性和数据冗余,保证数据的可靠性和持久性。

Hive - 数据的管家: Hive 类似于一个数据仓库,它建立在 HDFS 之上,提供了 SQL-like 的查询语言(HiveQL),让数据分析师和开发者可以用类似 SQL 的方式来查询和管理 HDFS 上的大数据。Hive 把复杂的 MapReduce 编程抽象掉了,让用户更专注于数据的业务逻辑,而不是底层的技术细节。它在内部将 SQL 查询转化为 MapReduce 任务执行,使大数据的处理变得更简单。

HBase - 数据的快餐店: HBase 是一个基于 HDFS 的 NoSQL 数据库,它提供了实时读写和随机访问的能力。想象一下,如果你需要快速获取某个特定的数据点,而不用等待整个文件读取完毕,HBase 就是为你准备的。它非常适合于需要低延迟数据读写的场景,比如实时数据流处理或在线服务。HBase 使用列族存储数据,可以水平扩展,支持非常大的数据集。

总结起来,HDFS 是存储数据的基础设施,Hive 是让数据查询变得更简单的工具,而 HBase 是提供快速随机访问和实时数据处理的数据库。它们三者共同构成了 Hadoop 生态系统中存储和处理大数据的核心组件。你可以根据具体的应用场景选择使用其中一个或多个组件,以构建高效的数据处理解决方案。

安装环境:

Hadoop: hadoop-2.7.5

Hive:apache-hive-3.1.2-bin

mysql驱动:mysql-connector-java-5.1.37

备注:所有的压缩包放在 /opt 目录下,解压包放在 /app 目录下

一、安装mysql

下载官方mysql的rpm包

[root@Hadoop01 ~]# cd /usr/local/src
[root@Hadoop01 src]# wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
[root@Hadoop01 src]# ls
mysql57-community-release-el7-11.noarch.rpm
卸载原生的mariadb
[root@Hadoop01 src]# rpm -qa|grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
 
[root@Hadoop01 src]# yum remove -y mariadb-libs-5.5.60-1.el7_5.x86_64

没有的话就跳过这一步

yum安装mysql-serve

[root@Hadoop01 src]# rpm -ivh mysql57-community-release-el7-11.noarch.rpm
warning: mysql57-community-release-el7-11.noarch.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql57-community-release-el7-11 ################################# [100%]
 
[root@Hadoop01 src]# yum -y install mysql-community-server

在这里可能会遇到以下错误:
The GPG keys listed for the “MySQL 5.7 Community Server” repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.

Failing package is: mysql-community-libs-compat-5.7.37-1.el7.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

原因是Mysql的GPG升级了,需要重新获取
使用以下命令即可:

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

再执行:

yum -y install mysql-community-server
验证安装是否成功

#开启mysql服务

[root@Hadoop01 src]# systemctl start mysqld.service

# 查看mysql状态

[root@Hadoop01 src]# systemctl status mysqld.service

密码设置
# 生成初始密码   hfai38(&kfnw%;

[root@Hadoop01 src]#  cat /var/log/mysqld.log|grep 'temporary password'
2024-06-25T16:19:46.809908Z 1 [Note] A temporary password is generated for root@localhost: hfai38(&kfnw%;

# 利用刚才生成的初始密码自定义新的密码

[root@Hadoop01 src]# mysql -u root -p
Enter password: 

输入刚才的密码  hfai38(&kfnw%; 进入mysql:

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> 
 
#以此输入以下内容,就可以自定义的简单密码123456
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
 
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
 
mysql> set global validate_password_mixed_case_count=2;
Query OK, 0 rows affected (0.00 sec)
 
mysql> alter user 'root'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
重启mysql

# 重启mysql

[root@Hadoop01 src]# service mysqld restart
Redirecting to /bin/systemctl restart mysqld.service

# 用我们刚才设置的密码123456登录

[root@Hadoop01 src]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.27 MySQL Community Server (GPL)
 
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql>

到这里mysql就安装结束了! 

二、Hive的搭建

Hive的安装基于Hadoop,因此需要先搭建好Hadoop环境

其次以MySQL作为Hive的元数据库,所以也要先安装好MySQL

安装配置Hive

找到对应版本的Hive安装包:hive-3.1.2.

利用moba等工具将安装包上传到/opt下,并解压到/app下:

[root@Hadoop01 src]#  tar -zxvf /opt/apache-hive-3.1.2-bin.tar.gz -C /app

 进入/app下重命名:

[root@Hadoop01 app]# mv apache-hive-3.1.2-bin/ hive3.1

在/etc/profile中添加环境变量:

[root@Hadoop01 app]# vi /etc/profile
 
#添加以下内容
export HIVE_HOME=/app/hive3.1/
export PATH=$PATH:HIVE_HOME/bin

生效:

[root@Hadoop01 app]# cd hive3.1/conf/
[root@Hadoop01 conf]# vim hive-site.xml

在 /app/hive3.1/conf/ 下创建hive-site.xml 文件:

[root@Hadoop01 app]# cd hive3.1/conf/
[root@Hadoop01 conf]# vim hive-site.xml

在文件中输入一下内容:

****注意驱动版本的问题

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>hive.metastore.local</name>
        <value>true</value>
    </property>
 
    #这里的Hadoop01要改成自己的主机名
    #后面的hive是一会要在mysql创建的
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
         <value>jdbc:mysql://Hadoop01:3306/hive?characterEncoding=UTF-8</value>
    </property>
 
    # 数据库的驱动类名称
    # 新版本8.0版本的驱动为com.mysql.cj.jdbc.Driver
    # 旧版本5.x版本的驱动为com.mysql.jdbc.Driver
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
 
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
 
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
    </property>
</configuration>

配置hive-log4j2.properties

复制并更名hive-log4j2.properties.template为 hive-log4j2.properties文件,并修改文件内容:

[root@Hadoop01 conf]#  cp hive-log4j2.properties.template hive-log4j2.properties
[root@Hadoop01 conf]# vi hive-log4j2.properties
 
# 修改内容
property.hive.log.dir =/app/hive3.1/temp/root
 

配置hive-env.sh文件

复制并更名hive-env.sh.template为 hive-env.sh文件,并修改文件内容:

[root@Hadoop01 conf]# cp hive-env.sh.template hive-env.sh
[root@Hadoop01 conf]# vi hive-env.sh
 
#添加以下内容:
export HADOOP_HOME=/app/hadoop2.7/
export HIVE_CONF_DIR=/app/hive3.1/conf/
export HIVE_AUX_JARS_PATH=/app/hive3.1/bin/
Hive启动

进入mysql,创建Hive数据库:

[root@Hadoop01 conf]# mysql -u root -p
mysql> create database hive;
Query OK, 1 row affected (0.05 sec)

进入官网下载数据库驱动:

将mysql-connector-java-5.1.37.tar.gz 放入/opt目录下,并解压到/app下:

[root@Hadoop01 conf]# tar -zxvf /opt/mysql-connector-java-5.1.37.tar.gz -C /app

然后将里面的mysql-connector-java-5.1.37-bin.jar 上传到 /app/hive3.1/lib:

[root@Hadoop01 conf]# cp /app/mysql-connector-java-5.1.37/mysql-connector-java-5.1.37-bin.jar /app/hive3.1/lib/

进入hive的bin目录,进行初始化:

[root@Hadoop01 conf]# cd ../bin
[root@Hadoop01 bin]# schematool -dbType mysql -initSchema

出现schemaTool competed就成功了!

三、出现的问题

①Failed to load driver

可能原因:

--驱动的版本不对;
--驱动没放在正确的位置(Hive/lib下);
--将驱动整个目录而不是jar包放在Hive/lib下,解压出来是一个目录,没注意的话也会报错。

②not allowed to connect to this MySQL server

服务器不允许远程连接,我们进入mysql进行以下修改:

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> update user set host = '%' where user='root';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

再重启mysql:

[root@Hadoop01 bin]# systemctl stop mysqld.service
[root@Hadoop01 bin]#  systemctl start mysqld.service

解决完错误之后,再重新初始化Hive:

[root@Hadoop01 bin]# schematool -dbType mysql -initSchema

链接: https://pan.baidu.com/s/1IfORDbxsaI1k4KykzIPt7Q?pwd=dnbg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值