在hadoop集群上的集成Hive

本文章的各项配置均参考cloudera官网,如有版本变化,导致配置无效,出错,请参考cloudera官网文档。

cloudera官网:https://www.cloudera.com
输入网址加载成功,导航条拉到最底部。
在hadoop集群上的集成Hive_第1张图片
在hadoop集群上的集成Hive_第2张图片
在hadoop集群上的集成Hive_第3张图片
查看日志文件的命令,防止配置时出错,有些同学连错误都找不到,却讲文档有错,好伤心!
//查看日志目录
ls /etc/log
cat 相应的日志内容
//第一步,配置Metastore数据库
为hive配置各种数据库的官方文档
https://www.cloudera.com/documentation/enterprise/5-13-x/topics/cdh_ig_hive_metastore_configure.html
建议在Metastore所在主机和Hive Server1或者Hive Server2进程分开的主机上
的一个或多个远程服务器上为Metastore配置数据库。
1.为Hive Metastore配置远程Mysql数据库,
1.1如果尚未安装mysql。可以使用yum方式安装
如果您尚未安装并启动MySQL,请安装并启动它
要在RHEL系统上安装MySQL:
$ sudo yum install mysql-server
要在SLES系统上安装MySQL:
$ sudo zypper安装mysql
$ sudo zypper install libmysqlclient_r17
要在Debian / Ubuntu系统上安装MySQL:
$ sudo apt-get install mysql-server
使用该命令安装MySQL后,您可能需要响应提示以确认您确实要完成安装。安装完成后,启动MySQL的 守护进程。
在RHEL系统上
$ sudo service mysqld start
在SLES和Debian / Ubuntu系统上
$ sudo服务mysql启动
配置MySQL服务和连接器
在使用远程MySQL数据库运行Hive Metastore之前,必须配置远程MySQL数据库的连接器,设置初始数据库模式,并为Hive用户配置MySQL用户帐户。
要在RHEL 6系统上安装MySQL连接器:
在Hive Metastore服务器主机上,安装 MySQL的连接器的Java 并象征性地将文件链接到 / usr / lib中/蜂巢/ LIB / 目录。
$ sudo yum install mysql-connector-java
$ ln -s /usr/share/java/mysql-connector-java.jar /usr/lib/hive/lib/mysql-connector-java.jar
要在RHEL 5系统上安装MySQL连接器:
从http://www.mysql.com/downloads/connector/j/5.1.html下载MySQL JDBC驱动程序。如果您还没有帐户,则需要注册帐户并登录,然后才能下载。然后将其复制到/ usr / lib / hive / lib /目录。例如:
$ sudo cp mysql-connector-java- version / mysql-connector-java- version -bin.jar / usr / lib / hive / lib /
注意:在发布时,版本是5.1.31,但是当你读到这个版本时,版本可能已经改变了。如果您使用的是MySQL 5.6版,则必须使用版本5.1.26或更高版本的驱动程序。
要在SLES系统上安装MySQL连接器:
在Hive Metastore服务器主机上,安装 MySQL的连接器的Java 并象征性地将文件链接到 / usr / lib中/蜂巢/ LIB / 目录。
$ sudo zypper install mysql-connector-java
$ ln -s /usr/share/java/mysql-connector-java.jar /usr/lib/hive/lib/mysql-connector-java.jar
要在Debian / Ubuntu系统上安装MySQL连接器:
在Hive Metastore服务器主机上,安装 MySQL的连接器的Java 并象征性地将文件链接到 / usr / lib中/蜂巢/ LIB / 目录。
$ sudo apt-get install libmysql-java
$ ln -s /usr/share/java/libmysql-java.jar /usr/lib/hive/lib/libmysql-java.jar
配置MySQL以使用强密码并在启动时启动。请注意,在以下过程中,您当前根密码为空。当系统提示您输入root密码时,请按Enter键。
设置MySQL root密码:
$ sudo / usr / bin / mysql_secure_installation
[…]
输入root的当前密码(输入none):
好的,成功使用密码,继续…
[…]
设置root密码?[是/否] y
新密码:
重新输入新的密码:
删除匿名用户?[是/否] Y.
[…]
禁止远程登录?[是/否] N.
[…]
删除测试数据库并访问它[Y / n] Y.
[…]
现在重新加载权限表?[是/否] Y.
全部完成!
要确保MySQL服务器在启动时启动:

在RHEL系统上:
$ sudo / sbin / chkconfig mysqld on
$ sudo / sbin / chkconfig --list mysqld
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
在SLES系统上:
$ sudo chkconfig --add mysql
在Debian / Ubuntu系统上:
$ sudo chkconfig mysql on
创建数据库和用户
本节中的说明假定您使用的是远程模式,并且MySQL数据库安装在与Metastore服务不同的主机上,该服务在名为的主机上运行metastorehost 在示例中。
注意:如果Metastore服务将在安装了数据库的主机上运行,​​请替换’metastorehost’ 在里面 CREATE USER 用例子 ‘localhost’ 的。同样,值javax.jdo.option.ConnectionURL 在 /etc/hive/conf/hive-site.xml (必须在下一步讨论) JDBC:MySQL的://localhost/metastore。有关添加MySQL用户的更多信息,
请参阅http://dev.mysql.com/doc/refman/5.5/en/adding-users.html。
创建初始数据库模式。Cloudera建议使用Hive架构工具 来执行此操作。
如果由于某种原因您决定不使用架构工具,则可以使用 hive-schema- nnn mysql.sql而是文件; 该文件位于/ usr / lib目录/蜂房/脚本/ metastore /升级/ MySQL的/目录。(nnn是当前的Hive版本,例如1.1.0。)如果您决定使用,请按以下步骤操作hive-schema- nnn mysql.sql。
使用hive-schema- nnn mysql.sql的示例
注意:仅当您未使用Hive架构工具时才执行此操作。
$ mysql -u root -p
输入密码:
mysql> CREATE DATABASE metastore;
mysql>使用Metastore;
//n.n.n代表Sql脚本文件的版本号
mysql> SOURCE /usr/lib/hive/scripts/metastore/upgrade/mysql/hive-schema-n.n.n.mysql.sql;
您还需要一个用于Hive的MySQL用户帐户来访问Metastore。防止此用户帐户在Metastore数据库模式中创建或更改表非常重要。
重要说明:为防止用户在使用较低或较高版本的Hive时无意中破坏Metastore架构,请设置 hive.metastore.schema.verification 财产到真实 /usr/lib/hive/conf/hive-site.xml 在Metastore主机上。

metastorehost:本机ip或者hadoop1
mypassword:密码
mysql> CREATE USER’hive’@‘metastorehost’ENFENTIFIED BY’mypassword’;

mysql> REVOKE ALL PRIVILEGES,来自’hive’@‘alkororehost’的授权选项;
mysql>在Metastore上授予所有特权。*’‘hive’@‘metastorehost’;
mysql> FLUSH PRIVILEGES;
mysql> quit;
配置Metastore服务以与MySQL数据库通信
此步骤显示您需要设置的配置属性 蜂房的site.xml(/usr/lib/hive/conf/hive-site.xml)配置Metastore服务与MySQL数据库通信,
并提供样本设置。虽然你可以使用相同的蜂房的site.xml 在所有主机(客户端,Metastore,HiveServer)上,
hive.metastore.uris是唯一必须在所有这些上配置的属性; 其他只用于Metastore主机。

给定运行的MySQL数据库 为myhost 和用户帐户 蜂巢 用密码 我的密码,按如下方式设置配置(覆盖任何现有值)。

注:该hive.metastore.local不再支持该属性(从Hive 0.10开始); 设置hive.metastore.uris 足以表明您正在使用远程Metastore。
<属性>

javax.jdo.option.ConnectionURL
jdbc:mysql://myhost/metastore
the URL of the MySQL database

javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver javax.jdo.option.ConnectionUserName hive javax.jdo.option.ConnectionPassword mypassword datanucleus.autoCreateSchema false datanucleus.fixedDatastore true datanucleus.autoStartMechanism SchemaTable hive.metastore.uris thrift:// hive.metastore.schema.verification true

在使用HiveServer2之前,必须进行以下配置更改。如果不这样做可能会导致不可预测的行为
您必须正确配置和启用Hive的Table Lock Manager。这需要安装ZooKeeper并设置ZooKeeper集合; 请参阅ZooKeeper安装。
重要说明:如果不这样做,将阻止HiveServer2处理并发查询请求,并可能导致数据损坏。
通过设置属性启用锁管理器 /etc/hive/conf/hive-site.xml 如下所示(用实际的ZooKeeper节点名替换示例中的那些):

hive.support.concurrency
Enable Hive’s Table Lock Manager Service
true

hive.zookeeper.quorum Zookeeper quorum used by Hive's Table Lock Manager 第一个主机的IP地址,第二个主机的IP地址,第三个主机的IP地址

//主机的IP地址项,如果有配置映射,也可以用映射主机名来找到。
在未指定有效Zookeeper仲裁节点列表的情况下启用表锁定管理器将导致不可预测的行为。确保正确配置了这两个属性。
hive.zookeeper.client.port
如果ZooKeeper没有使用默认值 CLIENTPORT,你需要设置 hive.zookeeper.client.port 在 /etc/hive/conf/hive-site.xml与ZooKeeper使用的值相同。校验/etc/zookeeper/conf/zoo.cfg 找到的价值 CLIENTPORT。如果CLIENTPORT 设置为2181(默认值)以外的任何值hive.zookeeper.client.port达到相同的价值。例如,如果CLIENTPORT 设置为2222,设置 hive.zookeeper.client.port 到2222也是:

hive.zookeeper.client.port
2222

The port at which the clients will connect.


Cloudera建议您以“远程模式”部署Hive Metastore,它将Hive表和分区的元数据存储起来。在此模式下,Metastore服务在其自己的JVM进程中运行,其他服务(如HiveServer2,HCatalog和Apache Impala)使用Thrift网络API与Metastore进行通信。
重要:
如果在远程模式下运行Metastore ,则必须在启动HiveServer2之前启动Metastore。
安装和配置Hive Metastore后,您可以启动该服务。
要将Metastore作为守护程序运行,命令为:
$ sudo您的Hive数据存储在HDFS中,通常位于 /用户/蜂巢/仓库。该/用户/蜂巢 和 /用户/蜂巢/仓库如果目录尚不存在,则需要创建目录。确保此位置(或您指定的任何路径为hive.metastore.warehouse.dir 在你的 蜂房的site.xml)存在并且可由您希望创建表的用户写入。
重要:
Cloudera建议将Hive仓库目录的权限设置为 1777,设置粘滞位,使所有用户都可以访问它。这允许用户创建和访问他们的表,但是阻止他们删除他们不拥有的表。
此外,每个提交查询的用户都必须拥有HDFS主目录。 / tmp目录 (在本地文件系统上)必须是世界可写的,因为Hive广泛使用它。
HiveServer2 Impersonation允许用户以连接用户身份执行查询和访问HDFS文件。
如果您未启用模拟,HiveServer2默认执行所有Hive任务作为启动Hive服务器的用户ID; 对于使用Kerberos身份验证的群集,这是映射到HiveServer2使用的Kerberos主体的ID 。设置权限1777,如上所述,允许此用户访问Hive仓库目录。
您可以通过设置更改此默认行为 hive.metastore.execute.setugi 至 真正 在服务器和客户端上。此设置使Metastore服务器使用客户端的用户和组权限。 service hive-metastore start

在CDH中启动,停止和使用HiveServer2
HiveServer2是HiveServer的改进版本,支持Kerberos身份验证和多客户端并发。您可以使用Beeline客户端访问HiveServer2。
警告:
如果在远程模式下运行Metastore ,则必须在启动HiveServer2之前启动Hive Metastore。HiveServer2尝试与Metastore进行通信,作为其初始化引导程序的一部分。如果无法执行此操作,则会失败并显示错误。
要启动HiveServer2:
$ sudo service hive-server2 start
要停止HiveServer2:
$ sudo service hive-server2 stop
要确认HiveServer2是否正常工作,请启动 beeline CLI并使用它来执行show tables;
查询HiveServer2进程:
/usr/lib/hive/bin/beeline
! connectjdbc:hive2://localhost:10000 hive root org.apache.hive.jdbc.HiveDriver
查询该连接有权限查询的数据库和数据表
show databases;
show tables;
注:beeline内默认有权限控制,该套流程所建立的连接中无法做表的load操作
例如:声明数据库表
create table movie
(movie_id int,movie_name string,movie_leixing string)
row format delimited fields terminated by ‘^’
stored as textfile
//从本地填充数据进入内部表,这一步在hive 客户端中不会出错,在beeline连接中会出错。
load data local inpath ‘/home/cloudera/Desktop/movie.dat’ into table movie

你可能感兴趣的:(大数据,Hive)