Hive安装部署

1.Hive安装地址

1.1.Hive官网地址

 Apache Hive TM

1.2  文档查看地址

GettingStarted - Apache Hive - Apache Software Foundation  

1.3  下载地址

Index of /dist/hive

1.4  github地址

https://github.com/apache/hive

2.Hive的安装部署

2.1准备HDFS

2.2mysql数据库准备

        有一台mysql服务器        linux01

        mysql要开启远程连接服务

1) [root@linux1 ~]# service mysqld  start 
  Starting mysqld:                      [  OK  ]
2) 登录mysql -uroot  -proot
3) set global validate_password_policy=0;
4) set global validate_password_length=1;  这个两个设置以后 密码很简单不会报错
5) 开放远程连接权限
mysql > grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
mysql > flush privileges;
6) 授权完成后,测试一下是否成功:在windows上用Navicat连接一下看是否能成功!	
补充: 数据库修改密码命令
SET PASSWORD FOR 'root'@'linux01' = PASSWORD('root');  

2.3配置

--hive-env.sh
export HADOOP_HOME=/opt/apps/hadoop-3.1.1
export HIVE_CONF_DIR=/opt/apps/hive-3.1.2/conf
--hive-site.xml

<configuration>
<!-- 记录hive中的元数据信息  记录在mysql中 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://linux01:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- mysql的用户名和密码 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
<!-- hive在HDFS上的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>/user/hive/tmp</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/user/hive/log</value>
</property>
<!-- 客户端远程连接的端口 -->
<property> 
<name>hive.server2.thrift.port</name> 
<value>10000</value>
</property>
<property> 
<name>hive.server2.thrift.bind.host</name> 
<value>0.0.0.0</value>
</property>
<property>
<name>hive.server2.webui.host</name>
<value>0.0.0.0</value>
</property>
<!-- hive服务的页面的端口 -->
<property>
<name>hive.server2.webui.port</name>
<value>10002</value>
</property>

<property> 
<name>hive.server2.long.polling.timeout</name> 
<value>5000</value>                               
</property>
<property>
<name>hive.server2.enable.doAs</name>
<value>true</value>
</property>
<property>
<name>datanucleus.autoCreateSchema</name>
<value>false</value>
</property>
<property>
<name>datanucleus.fixedDatastore</name>
<value>true</value>
</property>
<property>
<name>hive.execution.engine</name>
<value>mr</value>
</property>
<!-- 添加元数据服务配置 -->
<property>
     <name>hive.metastore.local</name>
     <value>false</value>
     <description>controls whether to connect to remove metastore server or open a new metastore server in Hive Client JVM</description>
</property>
<property>
    <name>hive.metastore.uris</name>
     <value>thrift://linux01:9083</value>
</property>
</configuration>
--/opt/apps/hadoop-3.1.1/etc/hadoop/core-site.xml 开启hive操作hadoop的权限
<!--hive操作hadoop的权限-->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>

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

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

2.4 复制mysql驱动包

在hive的lib包中默认没有mysql的驱动包 (Derby); 拷贝一个mysql的jdbc驱动jar包到hive的lib目录中

2.5 配置hive的环境变量

--/etc/profile
export  HIVE_HOME=/opt/apps/hive-3.1.2
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$HIVE_HOME/bin

2.6 将hive的元数据信息初始化到mysql中

${HIVE_HOME}/bin/schematool -initSchema -dbType mysql



-----
Initialization script completed
schemaTool completed       

在mysql数据库中发现生成一个新的hive数据库 , 说明hive初始化成功  

 2.7 启动元数据服务

hive --service metastore & 后台启动元数据服务
检查启动额端口
netstat -nltp | grep 9083  端口存在说明元数据服务启动成功


 hive 进入到操作hive的客户端

3.客户端

3.1 本地模式客户端

直接执行bin下的hive就可以在shell窗口中启动hive的客户端

bin/hive

这种本地模式下的客户端,显示数据的格式不是很友好!

3.2 远程客户端连接

前提:开启元数据服务  9083端口

        开启hive2服务

        9083        10000        10002

hiveserver2   &     -- 后台启动hiveserver2服务

netstat -nltp | grep 10000     启动成功以后 检查服务端口10000
tcp6       0      0 :::10000      :::*           LISTEN      21663/java 

查看WEBUI页面http://linux01:10002/

可以使用shell客户端户JDBC远程连接

在hive的bin目录下提供了一个网络连接工具 beeline

[root@linux01 bin]# beeline 
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/apps/hive-3.1.2/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/apps/hadoop-3.1.1/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Beeline version 3.1.2 by Apache Hive
beeline> 

然后输入相关的连接URI

beeline> !connect jdbc:hive2://linux01:10000
Connecting to jdbc:hive2://linux01:10000
Enter username for jdbc:hive2://linux01:10000: root
Enter password for jdbc:hive2://linux01:10000:  回车
Connected to: Apache Hive (version 3.1.2)
Driver: Hive JDBC (version 3.1.2)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://linux01:10000> 

远程连接窗口显示的数据比较友好

0: jdbc:hive2://linux01:10000> show databases ;

3.3 非交互式操作

bin/hive -help

usage: hive
 -d,--define <key=value>          Variable substitution to apply to Hive
                                  commands. e.g. -d A=B or --define A=B
    --database <databasename>     Specify the database to use
 -e <quoted-query-string>         SQL from command line
 -f <filename>                    SQL from files
 -H,--help                        Print help information
    --hiveconf <property=value>   Use value for given property
    --hivevar <key=value>         Variable substitution to apply to Hive
                                  commands. e.g. --hivevar A=B
 -i <filename>                    Initialization SQL file
 -S,--silent                      Silent mode in interactive shell
 -v,--verbose                     Verbose mode (echo executed SQL to the
                                  console)

1.“-e”不进入hive的交互窗口执行sql语句

[root@linux01hive]$ bin/hive -e "select id from student;"

以后可以将hive -e指令编写到shell脚本中 ,调度SQL语句

2.“-f”执行脚本中sql语句

(1)在/opt/module/datas目录下创建hivef.sql文件

[root@linux01datas]$ touch hivef.sql

​ 文件中写入正确的sql语句

​ select *from student;

(2)执行文件中的sql语句

[root@linux01hive]$ bin/hive -f /opt/module/datas/hivef.sql

(3)执行文件中的sql语句并将结果写入文件中

[root@linux01hive]$ bin/hive -f /opt/module/datas/hivef.sql > /opt/module/datas/hive_result.txt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值