centos下安装hive(单机版)

说明

1、hive以来与hadoop,所以要服务器上要有hadoop才能安装hive

2、hive需要依赖与mysql,所以需要现有MySQL服务才能安装hive

安装

下载地址

http://archive.apache.org/dist/hive/ 

解压

tar -zxvf /opt/software/apache-hive-3.1.2bin.tar.gz -C /opt/module/ 

修改环境变量

# 新增文件
vim /etc/profile.d/my_env.sh

# 新增内容
#HIVE_HOME 
export HIVE_HOME=/opt/module/hive 
export PATH=$PATH:$HIVE_HOME/bin

刷新环境变量

source /etc/profile.d/my_env.sh

解决冲突

mv $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.jar $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.bak

配置hadoop

vim /etc/profile
# 新增
export HADOOP_HOME=/opt/hadoop/hadoop-3.3.1

初始化元数据库

bin/schematool -dbType derby -initSchema

启动及使用

启动hadoop

sbin/start-all.sh

http://192.168.31.229:9870/explorer.html#/
http://192.168.31.229:8088/cluster

关闭防火墙

#查看状态
firewall-cmd --state
#这个亲测可用
systemctl stop firewalld.service
#开机禁止启动
systemctl disable firewalld.service

启动

bin/hive

报错

Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /tmp/hive. Name node is in safe mode.

原因

hadoop 处在安全模式

解决

## 进入hadoop的bin目录 执行↓
hadoop dfsadmin -safemode leave 

配置hadoop权限

hdfs dfs -chmod -R 777 /
hdfs dfs -chmod -R 777 /tmp

使用hive

-- 此过程比较慢
hive> show databases;
hive> show tables; 
hive> create table test(id int); 
hive> insert into test values(1);
hive> select * from test; 

查看监控日志

cat /tmp/root/hive.log 

hive+MySQL

修改配置文件

# 新增配置文件 
vim $HIVE_HOME/conf/hive-site.xml

新增

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- jdbc连接的URL -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://192.168.1.110:3306/metastore?useSSL=false</value>
    </property>

    <!-- jdbc连接的Driver-->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>

    <!-- jdbc连接的username-->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>

    <!-- jdbc连接的password -->
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
    </property>

    <!-- Hive元数据存储版本的验证 -->
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>

    <!--元数据存储授权-->
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>

    <!-- Hive默认在HDFS的工作目录 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
</configuration> 

在mysql中新增数据源

create database metastore; 

初始化

 schematool -initSchema -dbType mysql verbose

报错

[root@localhost bin]#  schematool -initSchema -dbType mysql verbose
Metastore connection URL:	 jdbc:mysql://192.168.1.110:3306/metastore?useSSL=false
Metastore Connection Driver :	 com.mysql.jdbc.Driver
Metastore connection User:	 root
org.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driver
Underlying cause: java.lang.ClassNotFoundException : com.mysql.jdbc.Driver
Use --verbose for detailed stacktrace.
*** schemaTool failed ***

原因:没有驱动包

解决办法:

下载jar包

mysql-connector-java-5.1.32.jar

放入hive的lib目录下

重新初始化即可

初始化后数据库中增加74张表

启动及使用

启动

bin/hive

使用

hive> show databases; 
hive> show tables; 
hive> create table test (id int); 
hive> insert into test values(1); 
hive> select * from test; 
hive> show databases; 
hive> show tables; 
hive> select * from aa; 

使用元数据服务方式访问hive

修改hive-site.xml

cd /opt/module/hive/conf
vim hive-site.xml
<!-- 指定存储元数据要连接的地址 --> 
<property> 
    <name>hive.metastore.uris</name> 
    <value>thrift://hadoop102:9083</value> 
</property> 

启动metastore

hive --service metastore

启动后重新打开一个会话 启动hive

bin/hive 

使用jdbc访问hive

修改hadoop的配置文件

vim core-site.xml

新增

<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

如果不配置应该是无法用java访问

修改hive-site.xml

<!-- 指定hiveserver2连接的host --> 
<property> 
    <name>hive.server2.thrift.bind.host</name>         
    <value>192.168.1.102</value> 
</property> 

<!-- 指定hiveserver2连接的端口号 --> 
<property> 
    <name>hive.server2.thrift.port</name> 
    <value>10000</value> 
</property>

<!--
<property>
    <name>hive.metastore.event.db.notification.api.auth</name>
    <value>false</value>
</property>
<property>
    <name>hive.server2.active.passive.ha.enable</name>
    <value>true</value>
</property>


<property>
    <name>datanucleus.schema.autoCreateAll</name>
    <value>true</value>
</property>

-->

启动server2

hive --service metastore
bin/hive --service hiveserver2

# 后台启动

nohub hive --service metastore &
nohub bin/hive --service hiveserver2 &

启动beeline

bin/beeline -u jdbc:hive2://192.168.1.102:10000 -n root 

进入客户端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值