hive是什么: hive是一个数据仓库,hive不是一个数据库,hive 不没有自己的数据,hive的数据存在hdfs 中,hive 依赖一个关系型数据库来存储 自己在 hdfs 中的数据的映射关系。

hive用来干什么:用来把 sql 翻译成 mapreduce java 代码,并且提交到 hadoop 中运行的工具。 hive类似  数据库的视图。hive 的本质是 为了不写  mapreduce java代码的 人提供的一种 简单的可以 操作 mapreduce 的 一种翻译工具。

hive 的安装:

    使用内嵌的数据库:

      1 解压 hive

      2 修改conf 目录下面的: cp hive-env.sh.template  hive-env.sh ,然后 配置 HADOOP_HOME,

        备注:或者把 HADOOP_HOME 写入环境变量(和第2 步 2 选一。都做也可以)。

    使用独立的数据库:

      

    cp hive-default.xml.template hive-site.xml 下面的修改都在这里面

      1.修改 数据库相关属性    

        修改 数据库连接。用户名,密码。驱动类,分别修改下面的几个配置:

A、修改javax.jdo.option.ConnectionURL属性。

<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost/hive?useSSL=false</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
B、修改javax.jdo.option.ConnectionDriverName属性。 <property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
C、修改javax.jdo.option.ConnectionUserName属性。即数据库用户名。 <property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>Username to use against metastore database</description>
</property>
D、修改javax.jdo.option.ConnectionPassword属性。即数据库密码。 <property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>password to use against metastore database</description>
</property>

  备注1:使用什么数据库 需要把 对应数据库驱动 jar 到复制到 lib  目录下面。 

  备注2: mysql 的 搞版本需要  useSSL=false 指定或略安全套接字。

   2 修改一些文件目录:

E、添加如下属性hive.metastore.local:

<property>
<name>hive.metastore.local</name>
<value>true</value>
<description>controls whether to connect to remove metastore server or open a new metastore server in Hive Client JVM</description>
</property>
F、修改hive.server2.logging.operation.log.location属性 <property>
<name>hive.server2.logging.operation.log.location</name>
<value>/tmp/hive/operation_logs</value>
<description>Top level directory where operation logs are stored if logging functionality is enabled</descripti on>
</property>
G、修改hive.exec.local.scratchdir属性。 <property>
<name>hive.exec.local.scratchdir</name>
<value>/tmp/hive</value>
<description>Local scratch space for Hive jobs</description>
</property>
H、修改hive.downloaded.resources.dir属性。 <property>
<name>hive.downloaded.resources.dir</name>
<value>/tmp/hive/resources</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
I、修改属性hive.querylog.location属性。 <property>
<name>hive.querylog.location</name>
<value>/tmp/hive/querylog</value>
<description>Location of Hive run time structured log file</description>
</property>

  

  备注:如果 不是测试的换 上面的 目录最好不要指定到/tmp 里面。测试无所谓。

  3 修改日志配置: 好像可以不做(日志冲突也能运行)

  cp hive-log4j.properties.template hive-log4j.properties

  如果出现  日志冲突:
  cp /home/install/hive-1.2.1/lib/jline-2.12.jar /home/install/hadoop-2.5.1/share/hadoop/yarn/lib/   
  rm -rf /home/install/hadoop-2.5.1/share/hadoop/yarn/lib/jline-0.9.94.jar

  4 初始化 hive的映射的mysql表结构:(实测需要先初始化才能启动)

    schematool -dbType mysql -initSchema

  5 如果配置hive 的 环境变量 ,直接使用 hive  启动 ,如果没有配置 ,在 bin 里面去 使用   ./hive 启动。

    ./hive

-------------------------------------------------------------------------hive 的  服务启动  和  beeline 连接:- ---------------------------------------------  

hive  如果需要java 代码连接需要启动 hive 服务。

    ./hive --service hiveserver2

    如果需要后台启动: nohup hive --service hiveserver2 &

    查找这个进程:ps -ef|grep hiveserver2

    默认端口10000 。

使用 beelien 连接

  ./beeline

然后:

  !connect jdbc:hive2://centos1:10000

这样就 默认用户名  null 密码 null  就可以连接上了。( 默认没有密码),但是 hdfs 的写入全系有要求。这里的用户 就是 beeline 传给hdfs 的 用户名。所以这里最好使用 你的 hdfs 的用户名登陆,密码用null;

这个就是匿名登陆抛出的异常:Permission denied: user=anonymous, access=WRITE, inode="/user/hive/warehouse/test":root:supergroup:drwxr-xr-x

hive server2 配置密码方式参考:https://blog.csdn.net/hua_ed/article/details/51693659

如果 如果不能连接  可能是 hdfs 的权限问题,在hdfs 的配置文件core-site.xml中加入如下配置

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

  

备注: hive 没有索引,如果要提高查询效率,可以通过提高 mr 的速度来提高。提高 mr 的速度 可以通过给文件合理的 副本数,然后同时在多台机子上去同步执行。

----------------------------------------------------------------------------语法-----------------------------------------------------------

          

hive的 语法基础语法 :

  hive 的  语法和 sql  非常像:

1 显示数据库:show  databases;

2 使用数据库: use 数据库名;

3 显示表:show tables;

4 创建表

  CREATE TABLE pokes (foo INT, bar STRING);

  使用 字段分隔符: ROW FORMAT DELIMITED FIELDS TERMINATED BY '  '

  如果已经有表: alter table test set SERDEPROPERTIES('field.delim'='\t');

5 修改表名

  

 ALTER TABLE pokes RENAME TO test;

6 修改 表 字段

  

   ALTER TABLE pokes ADD COLUMNS (new_col INT);  部分修改
 ALTER TABLE invites REPLACE COLUMNS (foo INT, bar STRING, baz INT COMMENT 'baz replaces new_col2');  全部修改

7 删除表
  
  DROP TABLE pokes;

8 修改字段类型或者名字

  alter table test change id id2 bigint;

9 导入数据

   LOAD DATA 【LOCAL 】INPATH '/home/hadoop/hfxdoc/person.txt' 【OVERWRITE】 INTO TABLE test;

  

  LOCAL :导入本地文件

  OVERWRITE: 覆盖

  备注:导入的实际就是把这个文件复制到  hdfs 文件系统的这个表的 目录下面。如果是 原文件 在 hdfs 上,那么 会移动原来的文件到 表对应的目录下面。

10 基础查询

  select * from test;

11 支持  where ,like , group by,order by,join  等等 ...........

12  查询结果 输出到本地

    

   INSERT OVERWRITE LOCAL DIRECTORY '/tmp/dest4.out' SELECT src.value WHERE src.key >= 300;  //输出到磁盘
  insert overwrite directory  '/testrt' select * from test;  //输出到 hdfs 13 查询结果插入
  
  INSERT OVERWRITE TABLE dest1 SELECT src.* WHERE src.key < 100
14 插入
   insert into table award(id,event_id,award_type,amount,mark ) values(2,2,"b",2,"mark2"); 15 分区
  在 创建 表的 时候指定 partition by( a string);
  插入的时候指定 partition(a = "a")   备注:分区就是在表的文件夹下面建了一个目录,分区的数据文件在这个文件夹里面。 16 导出 表文件
   export table award to "/tools/data"; 17 导入sql 脚本
  hive -f 文件名 18 导入 和 load 类似
  import table a '路径' 19 hive的 自定义函数

hive 安装 和基本使用的更多相关文章

  1. Hive安装配置指北(含Hive Metastore详解)

    个人主页: http://www.linbingdong.com 本文介绍Hive安装配置的整个过程,包括MySQL.Hive及Metastore的安装配置,并分析了Metastore三种配置方式的区 ...

  2. hive安装--设置mysql为远端metastore

    作业任务:安装Hive,有条件的同学可考虑用mysql作为元数据库安装(有一定难度,可以获得老师极度赞赏),安装完成后做简单SQL操作测试.将安装过程和最后测试成功的界面抓图提交 . 已有的当前虚拟机 ...

  3. Hive安装与部署集成mysql

    前提条件: 1.一台配置好hadoop环境的虚拟机.hadoop环境搭建教程:稍后补充 2.存在hadoop账户.不存在的可以新建hadoop账户安装配置hadoop. 安装教程: 一.Mysql安装 ...

  4. 【转】 hive安装配置及遇到的问题解决

    原文来自: http://blog.csdn.net/songchunhong/article/details/51423823 1.下载Hive安装包apache-hive-1.2.1-bin.ta ...

  5. Hadoop之hive安装过程以及运行常见问题

    Hive简介 1.数据仓库工具 2.支持一种与Sql类似的语言HiveQL 3.可以看成是从Sql到MapReduce的映射器 4.提供shall.Jdbc/odbc.Thrift.Web等接口 Hi ...

  6. Hive安装与配置详解

    既然是详解,那么我们就不能只知道怎么安装hive了,下面从hive的基本说起,如果你了解了,那么请直接移步安装与配置 hive是什么 hive安装和配置 hive的测试 hive 这里简单说明一下,好 ...

  7. hive安装详解

    1.安装MYSQL simon@simon-Lenovo-G400:~$ sudo apt-get install mysql-server simon@simon-Lenovo-G400:~$ su ...

  8. macbook hive安装

    1 原材料 1.1 已经安装好的伪分布式hadoop,版本2.8.3(参见链接https://www.cnblogs.com/wooluwalker/p/9128859.html) 1.2 apach ...

  9. [hive] hive 安装、配置

    一.hive安装 1.官网下载 1.2.2版本 http://apache.fayea.com/hive/hive-1.2.2/ 2. 解压,此处目录为 /opt/hadoop/hive-1.2.2 ...

  10. Hive安装与配置--- 基于MySQL元数据

    hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过 ...

随机推荐

  1. L253 Valentine's Day

    Are you ready for Valentine's Day, my fellow stargazers? Not sure if you know this, but the astrolog ...

  2. Could not load driverClass com.mysql.jdbc.Driver错误

    在整合spring和mybatis的时候,在spring配置文件中已经加载了db.properties并配置了c3p0数据源 但在写了一个测试类测试是否取到了数据库的连接时,报错:Could not ...

  3. python里的函数

    map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 假设用户输入的英文名字不规范, ...

  4. 5--Python入门--Python数据集合类型--字典

    列表list,最常用的数据类型,以[]为标识 元组tuple,和list很相似,但是不能二次赋值,用()标识 集合set,和list类似,但是set中没有重复的元素,常用于集合间的运算,用{}标识 字 ...

  5. IDEA发布应用时发布到lib下面的包不全

    IDEA发布应用时发布到lib下面的包不全,Tomcate启动时就报:At least one JAR was scanned for TLDs yet contained no TLDs. Enab ...

  6. CentOS中yum安装ffmpeg

    1.升级系统 sudo yum install epel-release -y sudo yum update -y sudo shutdown -r now 2.安装Nux Dextop Yum 源 ...

  7. Android Hook框架adbi源码浅析(二)

    二.libbase 其实上面加载完SO库后,hook的功能我们完全可以自己在动态库中实现.而adbi作者为了方便我们使用,编写了一个通用的hook框架工具即libbase库.libbase依然在解决两 ...

  8. Linux内核info leak漏洞

    1  Information Leak漏洞风险 从应用层软件,到hypervisor再到kernel代码,都存在Information Leak的风险.下面给出一些示例: 应用层软件:通常是应用敏感数 ...

  9. Python urllib.quote

    转: 编码:urllib.quote(string[, safe]),除了三个符号“_.-”外,将所有符号编码,后面的参数safe是不编码的字符, 使用的时候如果不设置的话,会将斜杠,冒号,等号,问号 ...

  10. Sublime Text3:插件+快捷键+环境变量设置+C/C++编译环境

    环境变量配置 如果电脑里之前下载过Codeblocks或者Dev,找到文件根目录,打开MinGw(或者MinGw64),点开bin目录,将bin文件夹的目录复制下来(以Codeblocks为例,将文件 ...