Centos7安装Hive2.3

准备

1、hadoop已部署(若没有可以参考:Centos7安装Hadoop2.7),集群情况如下:

hostname IP地址 部署规划
node1 172.20.0.4 NameNode、DataNode
node2 172.20.0.5 DataNode
node3 172.20.0.6 DataNode

2、官网下载安装包:apache-hive-2.3.6-bin.tar.gz(推荐去清华大学或中科大的开源镜像站)。

安装

hive只需要部署在主节点node1上,解压apache-hive-2.3.6-bin.tar.gz到/mydata;

然后将 /mydata/apache-hive-2.3.6-bin 重命名为 /mydata/hive-2.3.6。

配置环境变量:

export HIVE_HOME=/mydata/hive-2.3.6
export PATH=${HIVE_HOME}/bin:$PATH

hive是通过环境变量HADOOP_HOME寻找hadoop集群的。

$HIVE_HOME/conf/hive-default.xml.template 中包含了几乎所有hive的默认配置,修改时需要在同目录新建一个hive-site.xml,然后从default中将需要修改的配置项拷贝过来进行修改即可。

元数据

hive必须要一个关系型数据库来保存元数据(metastore),默认是使用自带的derby,但这个是单会话形式,性能非常有限,没有实用价值。

所以这里直接换成常用的mysql(若没有可以参考:Centos7安装使用Mysql),在mysql中增加数据库和用户:

MariaDB> create database hive_metastore;
MariaDB> create user ‘hive‘@‘%‘ identified by ‘hpwd‘;
MariaDB> grant all on hive_metastore.* to ‘hive‘@‘%‘;

在 $HIVE_HOME/conf/hive-site.xml 中配置mysql连接:

<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://node1:3306/hive_metastore</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hpwd</value>
  </property>
</configuration>

通过中科大的源下载连接myql的jar包(中科大源:http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/Connector-J/mysql-connector-java-5.1.48.zip),解压后将其中的:

mysql-connector-java-5.1.48.jar 拷贝到 $HIVE_HOME/lib。

然后在命令行初始化元数据库(看到 schemaTool completed 表示成功,也可以通过mysql看到hive_metastore中出现许多表):

shell> schematool -dbType mysql -initSchema

存储

hive真正用来分析统计的数据是保存在hdfs上。

官方教程要求使用下面的命令创建对应目录并赋予权限,但由于这边的hadoop和hive都是用的root用户,所以可以省略:

shell> hdfs dfs -mkdir       /tmp
shell> hdfs dfs -mkdir       /user/hive/warehouse
shell> hdfs dfs -chmod g+w   /tmp
shell> hdfs dfs -chmod g+w   /user/hive/warehouse

这两个目录(强调:这是hdfs上的)可以在hive-site.xml中修改下面两项:

hive.exec.scratchdir

hive.metastore.warehouse.dir

不过,没啥特殊要求不建议修改,因为还有挺多其他数据会写到/tmp/hive或/user/hive,要改当然最好都改;于是还是选择都不改吧,默认的路径也没啥不好。

另外,有两个本地的目录配置可以考虑改掉:

<property>
  <name>hive.exec.local.scratchdir</name>
  <value>/mydata/tmp/hive</value>
</property>
<property>
  <name>hive.querylog.location</name>
  <value>/mydata/logs/hive</value>
</property>

hive shell

命令行直接运行hive即可进入hive shell:

shell> hive
hive> create database xyz;
hive> show databases;
hive> use xyz;
hive> create table x (id int, name string);
hive> show tables;
hive> insert into x values(1, ‘hive‘);
hive> insert into x values(3, ‘hbase‘);
hive> insert into x values(2, ‘hadoop‘);
hive> select * from x;

这些命令都不需要解释,与mysql可以说一模一样,表xyz.x的数据存储在hdfs上的 /user/hive/warehouse/xyz.db/x :

命令虽一样,但肯定可以发现执行insert时明显是完成了一个mapreduce的job;

没错,这就是hive的作用所在,它可以将sql语句转换为mapreduce的job,一条sql就可以完成几十上百行mapreduce代码的工作。

hiveserver2

上面是通过hive的命令进行操作的,而实际中肯定是要通过程序连接,提供这个功能的是hiveserver2。

在hive-site.xml中添加下面的配置:

<property>  <name>hive.server2.authentication</name>  <value>NOSASL</value></property><property>  <name>hive.server2.enable.doAs</name>  <value>false</value></property><property>
  <name>hive.server2.logging.operation.log.location</name>
  <value>/mydata/logs/hive/hiveserver2</value>
</property>
配置项
说明
hive.server2.authentication
设置为NOSASL表示不进行身份验证;实际中当然要用验证,常用的是LDAP和KERBEROS,那就需要另开篇总结了
hive.server2.enable.doAs
关闭用户代理,这个代理需要hadoop那边也开启才行
hive.server2.logging.operation.log.location
 日志路径

命令行直接运行hiveserver2即可启动,但这样会阻塞在前端,所以要启动到后台(停止用:kill -9 [pid]):

shell> nohup hiveserver2 > /mydata/logs/hive/hiveserver2/std.out 2>&1 &

浏览器访问 http://node1:10002/ 可以看到一些hiveserver2服务的信息:

hive还自带了beeline工具作为客户端(通过jdbc)连接hiveserver2:

shell> beeline -u jdbc:hive2://node1:10000
beeline> show databaes;

下面是一段是根据官方示例进行了少许改动的Python代码:

shell> yum install gcc gcc-c++ make git python2-pip python-devel cyrus-sasl-devel -y  # 若缺少组件,无非是这里面的某个或某几个,根据报错信息判断,或直接全装shell> pip install pyhs2  # Python操作hiveserver2的库shell> vim t.py    #!/bin/bash    import pyhs2

    with pyhs2.connect(        host=‘node1‘,        port=10000,        authMechanism="NOSASL",        database=‘xyz‘) as conn:        with conn.cursor() as cur:            print cur.getDatabases()            cur.execute("select * from x")            print cur.getSchema()            for i in cur.fetch():                print ishell> python t.py    [[‘default‘, ‘‘], [‘xyz‘, ‘‘]]    [{‘comment‘: None, ‘columnName‘: ‘x.id‘, ‘type‘: ‘INT_TYPE‘}, {‘comment‘: None, ‘columnName‘: ‘x.name‘, ‘type‘: ‘STRING_TYPE‘}]    [1, ‘hive‘]    [2, ‘hadoop‘]    [3, ‘hbase‘]

over

原文地址:https://www.cnblogs.com/toSeek/p/12021448.html

时间: 2024-10-30 10:40:25

Centos7安装Hive2.3的相关文章

Centos7 安装配置OpenLdap服务及OpenLdap管理工具

我们上一篇文章中介绍了,Centos7+Openvpn使用Windows AD(LDAP)验证登录的配置介绍.说到LDAP服务,我们知道不止windows有,linux下也有,比如openldap,sambaLDAP服务,具体就不多介绍了,我们今天主要介绍一下Centos7 安装配置OpenLdap及Ldap管理工具等操作,为后面的Centos7+Openvpn+openldap验证登录做好基础. 我们首先配置一个指定源,我们源地址指向了阿里云的仓库源 cd /etc/yum.repos.d v

CentOS7安装python-pip

python中的一个十分好用的包管理工具python-pip是我们使用python必不可少的一件工具.但是在CentOS7安装时候却遇到了一些小问题: [[email protected] magic]# yum install python-pip 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.btte.net * extras: mirrors.btte.ne

HP服务器 hp 360g5 centos7安装问题

HP服务器  hp 360g5 centos7安装问题 一 :启动盘无法识别硬盘 1.进入安装光盘,用上下键选择安装centos--Install Centos7(注意不可按Enter键),如图: 2.按Tab键,对安装进行额外配置,在屏幕最下方会显示如下字样: 3.在额外配置的命令行上添加配置: hpsa.hpsa_simple_mode=1 hpsa.hpsa_allow_any=1,如图所示: 二:安装完成后无法引导  出现情况:CentOS开机进度条卡死在100% 显示 firmware

Centos7安装mariadb galera cluster数据库集群 & 详解

#Galera集群特点 集群之间无延时,同步复制.而master-slave主从异步复制,存在延迟. active-active多主,集群内部服务器都是同时写,必须等所有集群内所有数据库都完成数据写入,才会反馈完成,所以不存在数据丢失的情况. 集群节点自动故障转移,如果集群中单个节点故障,失效节点会自动被清除. 扩展方便,只要将新的节点添加到集群,新节点自动复制数据. #Galera集群原理     #主要通过galera插件保证数据的一致性,该数据复制的过程是可认证的复制,原理如下: #解析

Centos7 安装MPlayer过程详解

使用自带的totem基本上都无法播放视频,各种格式都不支持,令人无语.想到了MPlayer,为了看片,决定编译安装,过程真的是折腾.如图是自带的Totem播放提示,安装了解码还是无法播放,反正要找其他播放器了,也没兴趣去管他是什么原因. 需要用到的东西在MPlayer官网上都有,就一个页面可以把所有东西都下载好http://mplayerhq.hu/design7/dload.html 0x01 准备工作 使用svn方式获取获取源码命令 svn checkout svn://svn.mplaye

CentOS7安装redis数据库及php-redis扩展

redis 首先把redis安装到服务器中 1.wget http://download.redis.io/redis-stable.tar.gz 下载redis源码 2. tar xvzf redis-stable.tar.gz 解压 3.cd redis-stable 4.make   make的时候可能出现问题,我的就出现了异常 异常一: make[2]: cc: Command not found 异常原因:没有安装gcc 解决方案:yum install gcc-c++ 异常二: zm

Centos7安装配置Apache+PHP+Mysql+phpmyadmin

转载自: Centos7安装配置Apache+PHP+Mysql+phpmyadmin 一.安装Apache yum install httpd 安装成功后,Apache操作命令: systemctl start httpd //启动apache systemctl stop httpd //停止apache systemctl restart httpd //重启apache systemctl enable httpd //设置apache开机启动 异常处理我再阿里云上配置并出现启动Apac

Centos7安装并配置mysql5.6完美教程

Centos7将默认数据库mysql替换成了Mariadb,对于我们这些还想使用mysql的开发人员来说并不是一个好消息.然而,网上关于Linux安装mysql数据库的教程数不胜数,但是,大多教程都是漏洞百出.今天,为了帮助各位需要的人,从而写下Centos7安装配置mysql5.6的教程.好了,话不多说,上教程: 一.安装MySQL 1.下载安装包mysql-5.6.34-linux-glibc2.5-x86_64.tar(可前往官网自行下载:http://dev.mysql.com/down

CentOS7安装Oracle 11gR2 安装

概述 Oracle 在Linux和window上的安装不太一样,公司又是Linux系统上的Oracle,实在没辙,研究下Linux下Oracle的使用,oracle默认不支持CentOS系统安装,所以安装的时候,需要修改部分属性,先参考同行博客和自己安装实践,总结下安装流程. 准备工作 1.下载Oracle安装包:linux.x64_11gR2_database_1of2.zip 和 linux.x64_11gR2_database_2of2.zip ,可以下载到本地,通过ftp服务上传到Lin