大数据Linux学习|Gentoo/Arch/FreeBSDHadoop

在hadoop集群上安装hive+mysql

2020-08-17  本文已影响0人  大数据阶梯之路

一、安装hive前提条件

hive运行在hadoop集群上,所以先要确保你的hadoop集群已经安装完毕并且可正常启动运行。如果没安装好hadoop集群的可以参考我的这篇文章:Hadoop学习(一)入门与集群搭建。接着还需要安装mysql,因为hive的元数据是存储在mysql的,不过mysql我们可以只在集群的主节点机器安装一个就好,需要安装mysql服务端和客户端。

二、CentOS7安装Mariadb数据库(其实就是mysql的分支版本)

在linux中可以借助yum库来进行下载mysql,执行命令yum install -y mysql,之后就会自动下载了。

image.png 当下载好后,输入service mysqld start命令启动mysql,但会发觉报如下错,未能启动mysqld.service:未找到单元。 报错信息.png 我很纳闷,经过一顿百度之后,发觉是这个原因:CentOS7安装mysql后无法启动服务,提示Unit not found,于是按着文章中提到的再去安装了mariadb数据库(就是mysql的分支版本,提供的功能与mysql完全兼容)。
解决完上面的问题后,我们再来输入systemctl start mariadb.service命令开启服务,期间还报错过另一个问题,如下图: image.png 根据提示的命令,我输入journalctl -xe命令去查找报错原因,如下图:
image.png 发觉是因为我改动过/etc/my.cnf文件,设置了默认编码为utf8,也不知道为什么就会影响到启动服务,所以就再改回去恢复默认配置了,去掉默认编码设置。之后再重新输入systemctl start mariadb.service命令,服务就启动了。我们可以输入systemctl status mariadb.service命令查看当前mariadb服务状态,如图所示,显示active(running)开启。 image.png 接着,我们设置下将mariadb服务添加至开机自启动,输入systemctl enable mariadb.service命令即可。
接着输入mysqladmin -u root password 你想设置的mysql密码(例:123456)命令,创建一个输入root用户的密码,之后就用这个密码连接mariadb数据库,输入mysql -u root -p 123456命令测试是否能连通,如图所示就安装mariadb成功了。 image.png

三、在mariadb中创建hive用户和hive元数据库

#1、用root用户登录mysql
mysql -u root -p 回车后输入root用户密码登录
#2、创建hive用户
insert into mysql.user("Host","User","Password") values("localhost","hive",passwprd("hive"));
#3、创建hive数据库
create database hive;
#4、授权,使用户可以远程连接
grant all on hive.* to hive@'%' identified by 'hive';
#5、授权,使用户可以本地连接
grant all on hive.* to hive@'localhost' identified by 'hive';
#6、刷新授权表
flush privileges;

经过以上步骤就创建好了hive用户和hive元数据库,我们尝试登录一下,先exit退出root用户登录,之后重新输入mysql -u hive -p回车后输入hive用户密码登录,如下图所示就成功。

image.png 接着exit退出mariadb去/etc目录下修改my.cnf文件,在[mysqld]标签下添加如下配置
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

再去/etc/my.cnf.d目录下修改client.cnf文件,在[client]标签下添加如下配置

default-character-set=utf8

然后再去/etc/my.cnf.d目录下修改mysql-clients.cnf文件,在[mysql]标签下添加如下配置

default-character-set=utf8

全部配置完成后,输入systemctl restart mariadb命令重启mariadb,之后进入mariadb数据库查看字符集,至此,mariadb就安装配置完了。

image.png
PS:在分布式集群上安装hive+mysql,mysql可以不用每台机器都安装,只在主机器节点上安装即可,hive可以每台机器安装,mysql作为hive的元数据库,hadoop集群能访问到就好,配置都访问主机器的mysql作为元数据信息存储的地方即可。

四、安装并配置hive

JAVA_HOME=/usr/java/jdk1.8.0_60
HADOOP_HOME=/usr/hadoop-2.6.4
export HIVE_CONF_DIR=/usr/hive-2.3.7/conf
image.png
<!--所连接的mysql实例,分布式集群的话我这里是设置集群内的机器都用master上的mysql-->
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true</value>
  <description>JDBC connect string for a JDBC metastore.
To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
      For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
   </description>
</property>
<!--mysql数据库驱动-->
<property>
 <name>javax.jdo.option.ConnectionDriverName</name>
 <value>com.mysql.jdbc.Driver</value>
 <description>Driver class name for a JDBCmetastore</description>
</property>
<!--mysql数据库用户名-->
<property>
 <name>javax.jdo.option.ConnectionUserName</name>
 <value>hive</value>
 <description>username to use against metastoredatabase</description>
</property>
<!--mysql数据库密码-->
<property>
 <name>javax.jdo.option.ConnectionPassword</name>
 <value>hive用户的密码</value>
 <description>password to use against metastoredatabase</description>
</property>
<!--元数据mysql远程模式配置-->
<property>
    <name>hive.metastore.uris</name>
    <value>thrift://master:9083</value>
    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
  </property>
image.png
hadoop fs -mkdir -p /tmp/hive
hadoop fs -mkdir -p /hive/warehouse
hadoop fs -chmod -R g+w,o+w /tmp
hadoop fs -chmod -R g+w,o+w /hive 

五、hive在多台机器下安装

hive可以在集群内的多台机器安装,当经过上面步骤安装完一台机器的hive后,我们可以使用scp命令远程拷贝到集群内的不同机器,master机器cd切换到/usr目录下,之后具体命令及操作步骤如下:

scp -r /usr/hive-2.3.7 slave1:/usr   //基于ssh方式远程拷贝到slave1机器
scp -r /usr/hive-2.3.7 slave2:/usr   //基于ssh方式远程拷贝到slave2机器
scp -r /usr/hive-2.3.7 slave3:/usr   //基于ssh方式远程拷贝到slave3机器

#之后跟master机器一样配置环境变量vi /etc/profile,再source /etc/profile 使环境变量配置生效

参考文章链接
1、hadoop分布式集群安装配置hive+mysql
2、hive初始化SQL Error code :1045错误解决方法
3、centOS7环境下在hadoop集群安装hive
4、hive启动报错 java.net.URISyntaxException: Relative path in absolute URI: system:java.io.tmpdir7D/$%7B 解决方案

上一篇下一篇

猜你喜欢

热点阅读