Hive 之 入门环境搭建

转自:http://blog.csdn.net/u014726937/article/details/51983673


Hive入门

  Hive是一个数据仓库,用于存储海量格式化数据,方便开发人员对其使用SQL语言进行数据分析。 
  它的所有表中的数据存放在 hdfs 文件系统中,保证了数据的可靠性,安全性 
  它的表的描述信息 metastore(包括表字段定义、文件在hdfs中的映射位置)存放在单独的数据库中,默认的是derby本地文件数据库,大多情况下使用 MySQL 进行存储

7.1.1 derby数据库的特点

derby数据库以metastore_db文件形式存储在本地HIVE_HOME/bin目录下,因为是以当前启动hive脚本的目录作为参照的。如果切换至其他目录下,重新启动hive脚本,则会在该目录下重新创建一个metastore_db文件。

该数据库的缺点

1.只支持一个连接
2. 不能共享数据

所以一般应用中,我们使用mysql最为hive的metastore

下面将介绍hive(数据仓库)+mysql(metastore)的安装

安装Hive

Hive只在一个节点上安装即可

1 上传tar包

2 解压

tar -zxvf hive-0.9.0.tar.gz -C /itcast/

3 配置mysql metastore(需切换到root用户)

**安装mysql Server**

使用

rpm -ivh MySQL-server-5.1.73-1.glibc23.i386.rpm

命令安装mysqlserver 出现包冲突的解决方法: 
这里写图片描述 
1)切换到 /root目录下,执行如下命令:

rpm -qa | grep mysql

找到mysql的安装目录 
2)强制擦除该安装包并解除依赖

rpm -e mysql-libs-5.1.66-2.el6_3.i686 –nodeps

3)再次安装server

rpm -ivh MySQL-server-5.1.73-1.glibc23.i386.rpm 

为了配置方便,我们将客户端也安装上去

rpm -ivh MySQL-client-5.1.73-1.glibc23.i386.rpm 

mysql安装时配置 
1)修改mysql的密码 
使用默认的提示初始化mysql:

/usr/bin/mysql_secure_installation
(注意:删除匿名用户,允许用户远程连接)

注:如果出现mysql.sock找不到的错误 
先在/usr/share/mysql目录下尝试启动mysql.server后再次尝试初始化mysql配置

删除匿名用户:Y
不允许远程连接:n

登陆mysql
mysql -u root -p
password:***(由自己设定)

4 配置hive,将mysql作为hive的metastore

vim  hive-site.xml 

修改hive-site.xml,删除其他内容,只留如下内容:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <property>
    </property>
</configuration>
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

添加如下内容:

    数据库不存在时创建该数据库
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://itcast**:3306/hive?createDatabaseIfNotExist=true</value>
        <description>JDBC connect string for a JDBC metastore</description>
    </property>
    Jdbc名称
    <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.jdbc.Driver</value>
      <description>Driver class name for a JDBC metastore</description>
    </property>
    用户名
    <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>root</value>
      <description>username to use against metastore database</description>
    </property>
    密码
    <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>123</value>
      <description>password to use against metastore database</description>
    </property>
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
(可选配置)
//Metastore在hdfs上自定义的路径
hive.metastore.warehouse.dir
//每次执行hive所产生的log存放路径
hive.querylog.location

5 安装hive和mysql完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下

如果出现没有权限的问题,在mysql**授权**(在安装mysql的机器上执行)

mysql -uroot -p
#(执行下面的语句  *.*:所有库下的所有表   %:任何IP地址或主机都可以连接)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;


为了安全起见,可以缩小授权范围,例如只允许itcast03连接该数据库 :

    mysql>GRANT ALL PRIVILEGES ON hive.* TO 'root'@'itcast03' IDENTIFIED BY '123' WITH GRANT OPTION; 
 
 
  • 1
  • 1
代表授权itcast03访问hive数据库下的所有表
*.*  ---》 数据库名.表名

刷新数据库配置:

    mysql> FLUSH PRIVILEGES; 
 
 
  • 1
  • 1

6 访问hive的方式

1、 hive 命令行模式 

直接输入 /$HiveHome/bin/hive 启动hive程序,进入hive命令行,如果在环境变量中已经配置了HIVE_HOME,那么输入:

# hive
 
 
  • 1
  • 1

就可以启动 
hive –service cli 
用于Linux平台命令行查询,查询语句基本跟mysql查询语句类似 
  1.1 hive中“一次使用”命令:hive -e “SQL…” 
  这种方式的优点在于可以不进入hive命令行,就可以执行Hql语句 
例如:

[root@itcast05 ~]# hive -e "select * from student"

Logging initialized using configuration in file:/itcast/apache-hive-0.13.0-bin/conf/hive-log4j.properties
OK
1       tom
2       jerry
3       jim
Time taken: 1.568 seconds, Fetched: 3 row(s)

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

配合linux的数据重定向,还可以将这个查询数据输出到本地文件中:

[root@itcast05 ~]# hive -S -e "select * from student" > /root/qout1.txt
[root@itcast05 ~]# cat qout1.txt 
1       tom
2       jerry
3       jim
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5


  1.2 hive中“一次使用”命令:hive -f 本地文件路径 
  首先需要准备好文件,里面写好了SQL语句内容,比如:

[root@itcast05 ~]# cat hivequery.hql 
select * from student;
 
 
  • 1
  • 2
  • 1
  • 2

   接着,我们用一下这个 hive -f 命令,像这样: 

[root@itcast05 ~]# hive -f /root/hivequery.hql 

Logging initialized using configuration in file:/itcast/apache-hive-0.13.0-bin/conf/hive-log4j.properties
OK
1       tom
2       jerry
3       jim
Time taken: 2.114 seconds, Fetched: 3 row(s)
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8


  1.3 小技巧:使用hive -e 命令模糊查找hive配置属性名 
  当用户不能完整记清楚某个属性名时,可以使用下面这个技巧模糊获取这个属性名,免除使用set命令查找。假设用户没记清哪个属性指定了管理表的“warehouse”的路径,通过如下命令可以查看到:

[root@itcast05 ~]# hive -S -e "set" | grep warehouse
hive.metastore.warehouse.dir=/user/hive/warehouse
hive.warehouse.subdir.inherit.perms=false
 
 
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

-S:屏蔽无用提示信息,只显示结果 

2、 hive web界面的启动方式(不太常用)

hive –service hwi  
用于通过浏览器来访问hive


3、 hive 远程服务 (端口号10000) 启动方式

# hive –service hiveserver  &
 
 
  • 1
  • 1


  用Java等程序实现通过jdbc等驱动的访问hive就用这种起动方式了,这个是程序员最需要的方式了 
  也可以自己指定端口 hive --service hiveserver -p 50000 & (&表示后台运行) 
  输入完这些指令后终端就在运行hiveserver了,会卡住不动。其实已经在运行了,不用担心。

使用经验:1、3方式居多,2很少用

## 7.8 Hive与传统数据库比较 ##

查询语言 HiveQL SQL
数据存储位置 HDFS Raw Device or 本地FS
数据格式 用户定义 系统决定
数据更新 不支持 支持
索引 新版本有,但弱
执行 MapReduce Executor
执行延迟
可扩展性
数据规模

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
当搭建Hive 3.1.3环境时,以下是一些基本的步骤: 1. 安装Java:确保你的机器上已经安装了Java。Hive 3.1.3需要Java 8或更高版本。 2. 下载Hive:从Apache Hive的官方网站(https://hive.apache.org/downloads.html)下载Hive 3.1.3的二进制文件。 3. 解压文件:将下载的文件解压到你选择的目录中。 4. 配置环境变量:设置Hive的环境变量。在你的终端或命令提示符中,找到并编辑`~/.bashrc`或`~/.bash_profile`文件,并将以下内容添加到文件末尾: ```shell export HIVE_HOME=/path/to/hive export PATH=$PATH:$HIVE_HOME/bin ``` 然后运行`source ~/.bashrc`或`source ~/.bash_profile`使变量生效。 5. 配置Hadoop:Hive需要连接到一个Hadoop集群。在Hive目录中,进入`conf`文件夹,复制`hive-default.xml.template`并将其重命名为`hive-site.xml`。然后编辑`hive-site.xml`文件,设置以下属性: ```xml <property> <name>hive.execution.engine</name> <value>mr</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:derby:;databaseName=/path/to/metastore_db;create=true</value> </property> ``` 注意替换上述代码中的路径为你的Hadoop配置和元数据存储路径。 6. 启动Hive Metastore:在Hive目录中,执行以下命令启动Hive Metastore服务: ```shell schematool -dbType derby -initSchema ``` 这将初始化Hive Metastore的数据库。 7. 启动Hive CLI或Beeline:根据你的需求,可以使用Hive CLI(命令行界面)或Beeline(JDBC客户端)连接到Hive。执行以下命令启动Hive CLI: ```shell hive ``` 或者执行以下命令启动Beeline: ```shell beeline -u jdbc:hive2://localhost:10000 ``` 这将连接到本地的Hive服务。 这些步骤应该帮助你搭建Hive 3.1.3环境。根据你的需求,你可能还需要进行其他配置和调整。请参考Apache Hive的官方文档(https://cwiki.apache.org/confluence/display/Hive/Home)以获取更多详细信息和进一步的指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值