Hive(2)-Hive的配置

来源:互联网 发布:牛贝淘宝客3.17开源版 编辑:程序博客网 时间:2024/05/16 14:35

一.先安装mysql(MySQL存储元数据)
1.1 卸载原装的mysql
rpm -qa | grep mysql  // 这个命令就会查看该操作系统上是否已经安装了mysql数据库
有的话,我们就通过 rpm -e 命令 或者 rpm -e –nodeps 命令来卸载掉
[root@xiaoluo ~]# rpm -e mysql  // 普通删除模式
[root@xiaoluo ~]# rpm -e –nodeps mysql  // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除

1.2 安装mysql
yum list | grep mysql 命令来查看yum上提供的mysql数据库可下载的版本
输入 yum install -y mysql-server mysql mysql-devel 安装好
在等待了一番时间后,yum会帮我们选择好安装mysql数据库所需要的软件以及其它附属的一些软件

1.3安装好后,查看版本
rpm -qi mysql-server

二、mysql数据库的初始化及相关配置
2.1设置开机自动启动mysql服务
输入 service mysqld start 命令mysql服务
我们在使用mysql数据库时,都得首先启动mysqld服务,我们可以 通过 chkconfig –list | grep mysqld 命令来查看mysql服务是不是开机自动启动,如:
[root@xiaoluo ~]# chkconfig –list | grep mysqld
mysqld 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
我们发现mysqld服务并没有开机自动启动,我们当然可以通过 chkconfig mysqld on 命令来将其设置成开机启动,这样就不用每次都去手动启动
[root@xiaoluo ~]# chkconfig mysqld on
[root@xiaoluo ~]# chkconfig –list | grep mysql
mysqld 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

2.2设置root账号密码
我们可以通过 该命令来给我们的root账号设置密码(注意:这个root账号是mysql的root账号,非Linux的root账号)
[root@xiaoluo ~]# mysql admin -u root password ‘424525’  // 通过该命令给root账号设置密码为 424525
此时我们就可以通过 mysql -u root -p 命令来登录我们的mysql数据库了

2.3 查看配置信息
./etc/my.cnf 这是mysql的主配置文件
datadir=/var/lib/mysql #mysql数据库的数据库文件存放位置
#我们的mysql数据库的数据库文件通常是存放在了/ver/lib/mysql这个目录下

[root@hdp-node-01 mysql]# ls -l
总用量 20488
-rw-rw—-. 1 mysql mysql 10485760 4月 6 22:01 ibdata1
-rw-rw—-. 1 mysql mysql 5242880 4月 6 22:01 ib_logfile0
-rw-rw—-. 1 mysql mysql 5242880 4月 6 21:59 ib_logfile1
drwx——. 2 mysql mysql 4096 4月 6 21:59 mysql  // 这两个是mysql数据库安装时默认的两个数据库文件
srwxrwxrwx. 1 mysql mysql 0 4月 6 22:01 mysql.sock
drwx——. 2 mysql mysql 4096 4月 6 21:59 test// 这两个是mysql数据库安装时默认的两个数据库文件

三、设置mysql远程连接
3.1 root用户登录mysql
输入命令:mysql -u root -p 登陆mysql:
mysql> use mysql;
mysql> select host,user,password from user;
mysql> grant all privileges on . to root@’%’ identified by “424525”;
mysql>flush privileges; //刷新系统权限表
mysql>select host,user,password from user;
具体如下:

mysql> use mysql;  Reading table information for completion of table and column names  You can turn off this feature to get a quicker startup with -A  Database changed  mysql> select host,user,password from user;+-----------+------+-------------------------------------------+  | host      | user | password                                  |  +-----------+------+-------------------------------------------+  | localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |  | master    | root |                                           |  | 127.0.0.1 | root |                                           |  | localhost |      |                                           |  | master    |      |                                           |  +-----------+------+-------------------------------------------+  5 rows in set (0.00 sec)  mysql> grant all privileges on *.* to root@'%' identified by "424525"; Query OK, 0 rows affected (0.00 sec)    mysql>flush privileges; //刷新系统权限表mysql>select host,user,password from user;+-----------+------+-------------------------------------------+  | host      | user | password                                  |  +-----------+------+-------------------------------------------+  | localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |  | master    | root |                                           |  | 127.0.0.1 | root |                                           |  | localhost |      |                                           |  | master    |      |                                           |  | %         | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |  +-----------+------+-------------------------------------------+  6 rows in set (0.00 sec)  

通过以上命令,就是对任何客户端都允许通过,root用户来进行登陆查看。
(匿名用户的帐号和密码都为空,删除
use mysql;
delete from user where user=”; )

3.2创建hive用户
创建hive用户方法一:
CREATE USER ‘hive’ IDENTIFIED BY ‘424525’;#password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.
#CREATE USER ‘hive’ @’localhost’ IDENTIFIED BY ‘424525’;#表示只能从当前主机登录
授权
#grant all privileges on . to ‘hive’ with grant option; #.表示所有数据库
GRANT ALL PRIVILEGES ON . TO ‘hive’@’%’ WITH GRANT OPTION;# 如果想让该用户可以从任意远程主机登陆,可以使用通配符%
#GRANT ALL PRIVILEGES ON . TO ‘hive’@’hdp-node-01’ WITH GRANT OPTION;#只能在节点一上登录
flush privileges;

创建hive用户方法二:
mysql> insert into mysql.user(Host,User,Password) values(“localhost”,”hive”,password(“424525”));
这样就创建了一个名为:hive密码为:424525的用户。
注意:此处的”localhost”,是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将”localhost”改为”%”,表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。
GRANT ALL PRIVILEGES ON . TO ‘hive’@’%’ WITH GRANT OPTION;# 如果想让该用户可以从任意远程主机登陆,可以使用通配符%
flush privileges;

3.3 Hive用户登录
mysql -u hive -p
创建hive数据库
create database hive;

三、安装和配置Hive
3.1 解压安装
解压安装
tar -zxvf /usr/local/apache-hive-1.2.2-bin.tar.gz -C /usr/local/yyl
重命名
[root@hdp-node-01 yyl]# mv apache-hive-1.2.2-bin/ hive1.2.2
修改权限
chown -R root:root /usr/local/yyl/hive1.2.2/

3.2 配置环境变量
1、在/etc/profile文件中增加以下设置:

# set hive environmentexport HIVE_HOME=/usr/local/yyl/hive1.2.2export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$ZOOKEEPER_HOME/bin:$FLUME_HOME/bin:$HIVE_HOME/bin

source /etc/profile
3.4 新建hive-site.xml、hive-env.sh等文件
打开目录
cd /usr/local/yyl/hive1.2.2/conf/
拷贝且重命名
cp hive-default.xml.template hive-site.xml
cp hive-env.sh.template hive-env.sh
cp hive-log4j.properties.template hive-log4j.properties
cp hive-exec-log4j.properties.template hive-exec-log4j.properties

3.5 修改hive-site.xml
使用vim命令打开
vim hive-site.xml
使用/**查找需要修改的内容
如下:
(1)加入配置项
默认metastore在本地,添加配置改为非本地

<property>  <name>hive.metastore.local</name>  <value>false</value></property>

(2)修改配置项
hive默认为derby数据库,derby数据只运行单个用户进行连接,这里需要调整为mysql数据库

<property>  <name>hive.metastore.uris</name>  <value>thrift://hdp-node-01:9083</value  <description>Thrift URI for the remote metastore. ...</description></property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hdp-node-01:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBCmetastore</descriptioni</property>#连接的MySQL数据库驱动<property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBCmetastore</description></property>#连接的MySQL数据库用户名<property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> <description>username to use against metastoredatabase</description></property>#连接的MySQL数据库密码<property> <name>javax.jdo.option.ConnectionPassword</name> <value>424525</value> <description>password to use against metastoredatabase</description></property><property>    <name>hive.exec.scratchdir</name>    <value>/tmp/hive</value>  #(HDFS上的)临时文件目录    <description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/&lt;username&gt; is created, with ${hive.scratch.dir.permission}.</description>  </property>  <property>    <name>hive.exec.local.scratchdir</name>    <value>/tmp</value>    <description>Local scratch space for Hive jobs</description>  </property>  <property>    <name>hive.downloaded.resources.dir</name>    <value>/tmp</value>#注意不是temp    <description>Temporary local directory for added resources in the remote file system.</description>  </property><property>     <name>hive.metastore.warehouse.dir</name>     <value>/user/hive/warehouse</value>  #(HDFS上的)数据目录   <description>location of default database for the warehouse</description>   </property>  

3.6 下载mysql jdbc jar包
下载地址:
http://dev.mysql.com/downloads/connector/j/
下载完成后,复制到/usr/local/yyl目录下
在/home/hadoop目录下,解压安装
tar -zxvf mysql-connector-java-5.1.38.tar.gz
拷贝到Hive的lib目录下

cp mysql-connector-java-5.1.38/mysql-connector-java-5.1.38-bin.jar   $HIVE_HOME/lib

其中,$HIVE_HOME/lib即/usr/local/yyl/hive1.2.2/lib
如果不进行这一步,或操作过程中出错,启动Hive时,会报错
Unable to instantiateorg.apache.hadoop.hive.metastore.HiveMetaStoreClient

The specified datastore driver(“com.mysql.jdbc.Driver”) was not found in the CLASSPATH

3.7 为hive创建hdfs目录
在 Hive 中创建表之前需要使用以下 HDFS 命令创建 /tmp 和 /user/hive/warehouse (hive-site.xml 配置文件中属性项 hive.metastore.warehouse.dir 的默认值) 目录并给它们赋写权限
hdfs dfs -mkdir /tmp
hdfs dfs -mkdir /usr/hive/warehouse(自己分级创建)
hdfs dfs -chmod g+w /tmp
hdfs dfs -chmod g+w /usr
hdfs dfs -chmod g+w /usr/hive
hdfs dfs -chmod g+w /usr/hive/warehouse

3.8 修改hive-env.sh
cp hive-env.sh.template hive-env.sh
这个文件在conf目录下
加入以下内容

# set Java environmentexport JAVA_HOME=/usr/local/yyl/jdk1.8export JRE_HOME=/usr/local/yyl/jdk1.8/jreexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATHexport CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib# set hadoop pathexport HADOOP_HOME=/usr/local/yyl/hadoop-2.6.5export PATH=$PATH:$HADOOP_HOME/bin:$PATH  # set hive environmentexport HIVE_HOME=/usr/local/yyl/hive1.2.2export PATH=$HIVE_HOME/bin:$PATHexport HIVE_AUX_JARS_PATH=$HIVE_HOME/binexport HIVE_CONF_DIR=$HIVE_HOME/confexport HADOOP_USER_CLASSPATH_FIRST=true

其中,最后一句很重要,如果不加入,启动Hive时,会报以下错误
[ERROR] Terminal initialization failed;falling back to unsupported
java.lang.IncompatibleClassChangeError:Found class jline.Terminal, but interface was expected

四、启动并验证Hive
4.1 先启动Hadoop和mysql服务
若需要用到MapReduce还需先启动Hadoop,比如show tables命令执行时,就需要启动hdfs了;而且hive的配置里就有存放日志什么的,都是在hdfs里
start-all.sh

4.2 启动hive所需的后台服务
实际使用时,一般通过后台启动metastore和hiveserver实现服务,命令如下:
hive –service metastore &
hive –service hiveserver2 &

启动需要时间,一会儿后用通过jps命令可以看到两个进行运行在后台

这里写图片描述
4.3 登录Hive
前提条件:登录Hive前,需要启动Hadoop集群和MySQL以及hive服务
[root@hdp-node-01 lib]# hive

Logging initialized using configuration in jar:file:/usr/local/yyl/hive1.2.2/lib/hive-common-1.2.2.jar!/hive-log4j.properties
hive>

4.4 基本测试
登录hive,在hive创建表并查看该表,命令如下:
hive>create table test(a string, b int);
hive>show tables;
hive>desc test;

登录mysql,在TBLS表中查看新增test表:
mysql -u hive -p
mysql>use hive;
mysql>select TBL_ID, CREATE_TIME, DB_ID, OWNER, TBL_NAME,TBL_TYPE from TBLS;

这里写图片描述
从图中可以看出,hive中所有数据库表的元数据都存储在mysql中的hive数据中的TBLS表中

原创粉丝点击