hive环境搭建及问题


Hive安装

  1. alt+p打开sftp,上传apache-hive-2.3.4-bin.tar.gz到hadoop02。
    在这里插入图片描述
    在hadoop02虚拟机中进入到apps目录下,看到刚刚上传的hive安装包,解压tar zxvf apache-hive-2.3.4-bin.tar.gz,进入到bin目录下。
    在这里插入图片描述
  2. 在bin目录下运行hive脚本
    [hadoopUser@hadoop02 bin]$ ./hive
    (这是安装derby,但是我们要安装mysql,所以这一步仅作了解,不安装derby无需运行)
    在这里插入图片描述
  3. 修改配置文件
    返回到apache-hive-2.3.4-bin的conf目录下,创建一个 hive-site.xml文件 ,touch hive-site.xml
    在这里插入图片描述
  4. 在这个新创建的hive-site.xml文件下vim编辑以下内容,保存退出。
# 如果mysql和hive在同一个服务器节点,那么请把hadoop01修改为localhost
# mysql://mysql安装所在的服务器名称:3306/
<property>
    	<name>javax.jdo.option.ConnectionURL</name>
    	<value>jdbc:mysql://hadoop01:3306/hivedb?createDatabaseIfNotExist=true</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>

# mysql的用户名
<property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hadoopUser</value>
        <description>username to use against metastore database</description>
</property>

# mysql的密码
<property>
		<name>javax.jdo.option.ConnectionPassword</name>
		<value>123456</value>
		<description>password to use against metastore database</description>
</property>

# 可选配置,该配置信息用来指定hive数据仓库的数据存储在HDFS上的目录(该目录必须预先创建好)
<property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/home/hadoopUser/apps/hive/warehouse</value>
        <description>hive default warehouse,you can change</description>
</property>

在这里插入图片描述
5. sftp上传mysql驱动包(mysql-connector-java-5.1.40-bin.jar),放在apache-hive-2.3.4-bin目录下的lib文件夹下。
在这里插入图片描述
6. 配置环境变量
vim ~/.bashrc下添加内容
export HIVE_HOME=/home/hadoopUser/apps/apache-hive-2.3.4-bin
export PATH=$ PATH:$HIVE_HOME/bin
执行文件(重新加载文件)就能生效:source ~/.bashrc
在这里插入图片描述

7.验证hive安装
在这里插入图片描述
7. 初始化元数据库
hive 2.x以后的版本需要手动初始化元数据库。
schematool -dbType mysql -initSchema
在这里插入图片描述
8. 启动Hive客户端
[hadoopUser@hadoop02 bin]$ hive --service cli
或者
[hadoopUser@hadoop02 bin]$ hive

9.查看数据库
成功!
在这里插入图片描述

Hive的两种连接方式

  1. CLI
    进入hive的bin目录下在这里插入图片描述
    输入命令hive,成功的话就会是下图所示,就可以进行hive操作。
    在这里插入图片描述
  2. HiveServer2服务和beeline客户端
    hiveserver2是hive的服务器,beeline就是客户端,可以理解成mysql和navicat的关系。

①修改hadoop集群,进入到/apps/hadoop-2.7.6/etc/hadoop底下,ll可以看到很多配置文件,这里我们在hdfs-site.xmlcore-site.xml上加入配置信息。
在这里插入图片描述

②修改vim hdfs-site.xml配置文件(集群内的每个节点都要配置),表示启用webhdfs。

<property>
	<name>dfs.webhdfs.enabled</name>
	<value>true</value>
</property>

③修改vim core-site.xml配置文件(集群内的每个节点都要配置),设置hadoop代理用户。

<property>
	<name>hadoop.proxyuser.XXX.host</name>
	<value>*</value>
</property>

<property>
	<name>hadoop.proxyuser.XXX.groups</name>
	<value>*</value>
</property>
# XXX是你的用户名,我是hadoopUser
# hadoop.proxyuser.XXX.host配置成*的意义在于:
# 表示任何节点使用hadoop集群的代理用户hadoop都能访问hdfs集群,
# hadoop.proxyuser.hadoop.groups表示代理用户的组所属。

配置完成后,重启hdfs集群才生效 (stop/start-dfs.sh和stop/start-yarn.sh)

④ 重启完成后,先启动hiveserver2服务
nohup(no hang up,不挂起)命令的一般形式:
nohup command &
如果你正在运行一个进行,你认为退出账户时该进程还不会结束,就可以使用nohup命令,。

输入命令:nohup hiveserver2 1>/home/hadoopUser/apps/hive/hiveserver.log 2>/home/hadoopUser/apps/hive/hiveserver.err &
其中,1后面跟着的是你存放hiveserver.log的路径,代表标准日志
2后面跟着的是你存放hiveserver.err的路径,代表错误日志
如果不输出路径,日志会默认生成在当前目录,默认命名为nohup.xxx

如果不想输入记录日志,可以采用以下命令,不挂起可省略nohup:
nohup hiveserver2 1>/dev/null 2>/dev/null &
或者
nohup hiveserver2 >/dev/null 2>&1 &
在这里插入图片描述
⑤ 然后启动beeline客户端去连接hiveserver2服务
beeline -u jdbc:hive2://hadoop02:10000 -n hadoopUser
-u:指定元数据库的连接信息,即你安装hive的虚拟机名称
-n:搭建集群的用户名和用户名
但是我这里出现错误Unauthorized connection for super-user,具体可以看下面的问题6。
如果成功连接,就可以使用beeline进行hive操作。

搭建过程存在的问题

  1. 初始化元数据库的问题,显示hive-site.xml文件第二行有问题,打开文件发现是configuration写错了(低级错误)。
    在这里插入图片描述
  2. 继续初始化,还是存在问题,原因是我linux的mysql安装在hadoop01,这里报错因为我mysql路径在hive-site.xml中写成hadoop02了。
    在这里插入图片描述
  3. 修改完毕后,还是存在问题,是因为我远程连接的mysql账号不是root,又改为正确的账号和密码,就初始化元数据库成功了。
    在这里插入图片描述
  4. beeline客户端连接出现问题,原因是core-site.xml中hadoop要修改为你的用户名,我的用户名是hadoopUser(如下图)。
    修改完成后要重启集群,jps一下看有没有runjar,有的话先kill掉再启动
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    6.重启集群后,再次运行beeline,发现另外一个错误。 hadoopUser没有赋予超级用户的权限?
    在这里插入图片描述
    打开sodoers配置文件,发现给hadoopUser配置root权限显示颜色与上面不一致,主要原因是用户名含大写,可能是这个原因导致没有授权成功。
    无解了,以后创建linux用户名千万不要用大写!
    在这里插入图片描述
    所以在修改配置文件的时候,一定要细心谨慎一点,才不会出现问题。
发布了56 篇原创文章 · 获赞 34 · 访问量 3670

猜你喜欢

转载自blog.csdn.net/MicoOu/article/details/103293904
今日推荐