• 【HIVE】hive的安装与使用教程


    hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
    Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。
    Hive 没有专门的数据格式。 Hive 可以很好的工作在 Thrift 之上,控制分隔符,也允许用户指定数据格式。

    Hive简介:
    1)声明编程;
    2)Hive不包括计算框架,把计算交给:MR、Spark、Tez;
    3)Hive SQL;
    4)与传统的关系型数据库(Mysql)有区别;
    5)数据仓库;
    6)场景:
    	对历史数据做离线“分析”
    7)Hive 诟病:慢
    	MR慢
    	如果想提速:设置计算引擎:Spark
    
    

    Hive是:提供一个大数据的SQL的接口,不做计算。用来做数据分析。

    使用Mysql保存元数据信息:字段、字段类型、分割方式、存储方式。。。

    Hive 安装准备:

    1)Hadoop;
    2)Mysql;
    3)mysql-connector-java,放在$HIVE_HOME/lib目录下;

    mysql安装:

    mysql的安装
    	1. 只需要安装在集群里面的一台节点上即可,此处选择hadoop1节点
    	2. 在Hadoop1上安装mariadb
    		yum -y install  mariadb-server   mariadb
    	3. 开启服务并开机自启
    		systemctl start mariadb.service
    		systemctl enable mariadb.service
    	4. 设置密码。第一次登陆时直接空密码登陆,之后使用sql语句设置密码
    		mysql -u root -p
    		登录之后,先查看databases是否正常,之后sql语句设置密码
    		> use mysql;
    		> update user set password=password( '123456' ) where user= 'root' ;
    		然后设置root用户可以从任何主机登陆,对任何的库和表都有访问权限
    		> grant all privileges on *.* to root@'%' identified by '123456';
    		> grant all privileges on *.* to root@'hadoop1' identified by '123456';
    		> grant all privileges on *.* to root@'localhost' identified by '123456';
    		> FLUSH PRIVILEGES;
    

    配置:

    1. /etc/profile
    	export HIVE_HOME=...
    	export PATH=$PATH:$HIVE_HOME/bin
    	
    	使配置生效  source /etc/profile
    
    
    1. hive-env.sh中添加信息:
    	export JAVA_HOME=...
    	export HADOOP_HOME=...
    	export HIVE_HOME=...
    
    1. hive-site.xml
      1)Mysql连接方式,url,用户名,密码;
      2)log路径
    <configuration>
    	<property>
    		<name>javax.jdo.option.ConnectionURL</name>
    		<value>jdbc:mysql://bigboss3:3306/hive?createDatabaseIfNotExist=true</value>
    	</property>
    	<property>
    		<name>javax.jdo.option.ConnectionDriverName</name>
    		<value>com.mysql.jdbc.Driver</value>
    	</property>
    	<property>
    		<name>javax.jdo.option.ConnectionUserName</name>
    		<value>root</value>
    	</property>
    	<property>
    		<name>javax.jdo.option.ConnectionPassword</name>
    		<value>123456</value>
    	</property>
    	
    	<property> 
    		<name>hive.exec.scratchdir</name> 
    		<value>/tmp/hive</value> 
    	</property> 
    	<property> 
    		<name>hive.exec.local.scratchdir</name> 
    		<value>/tmp/hive/local</value> 
    		<description>Local scratch space for Hive jobs</description> 
    	</property> 
    	<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> 
    	<property> 
    		<name>hive.querylog.location</name> 
    		<value>/tmp/hive/querylog</value> 
    		<description>Location of Hive run time structured log file</description> 
    	</property>
    	<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</description> 
    	</property>
    	<property>
                    <name>hive.execution.engine</name>
                    <value>spark</value>
            </property>
    
    </configuration>
    
    
    
    1. 为Hive创建HDFS目录:
    	hdfs dfs -mkdir /tmp 
    	// /usr/hive/warehouse   是    Hive 数据存放的路径
    	hdfs dfs -mkdir -p /usr/hive/warehouse 
    	设置文件夹权限
    	hdfs dfs -chmod g+w /tmp 
    	hdfs dfs -chmod g+w /usr/hive/warehouse
    	
    	元数据:
    	数据:
    
    1. 访问方式
      1)hive //已弃用
      2)
      从 Hive 2.1 版本开始, 在启动 Hive 之前需运行 schematool 命令来执行初始化操作:
     schematool -dbType mysql -initSchema 
    
    先启动:hiveserver2  // 多用户,安全,推荐使用
    再执行:beeline
    

    beeline命令:

    //连接
    !connect jdbc:hive2://bigboss1:10000
    //展示数据库
    show databases;
    //建数据库
    create database test01;
    //建表
    create table emp(id int, name string, job string, mgr int, hiredate string, salary double, 
    bonus double, deptid int) row format delimited fields terminated by '	';
    //向表中导入数据
    load data local inpath "/root/example/hive/data/emp.txt" into table emp;
    //查询
    1. 求每个部门的平均薪水大于2000的部门
    2. 同1,但加上部门名字
    0: jdbc:hive2://bigboss3:10000>  select emp.deptid,dept.name, avg(salary) as avgsalary  
    
    from emp,dept where emp.deptid=dept.id group by emp.deptid,dept.name having 
    
    avgsalary>2000;
    WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future 
    
    versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X 
    
    releases.
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/opt/programs/hive-2.3.5/lib/log4j-slf4j-impl-
    
    2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/opt/programs/hadoop-
    
    2.6.0/share/hadoop/common/lib/slf4j-log4j12-
    
    1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
    2019-09-17 15:58:54	Starting to launch local task to process map join;	maximum 
    
    memory = 518979584
    2019-09-17 15:58:56	Dump the side-table for tag: 1 with group count: 4 into file: 
    
    file:/tmp/hive/local/8860e8f7-b680-436a-846f-7781fc8f45fd/hive_2019-09-17_15-58-
    
    49_975_7606403685014368047-1/-local-10005/HashTable-Stage-2/MapJoin-mapfile11--.hashtable
    2019-09-17 15:58:56	Uploaded 1 File to: file:/tmp/hive/local/8860e8f7-b680-436a-846f-
    
    7781fc8f45fd/hive_2019-09-17_15-58-49_975_7606403685014368047-1/-local-10005/HashTable-
    
    Stage-2/MapJoin-mapfile11--.hashtable (373 bytes)
    2019-09-17 15:58:56	End of local task; Time Taken: 2.036 sec.
    +-------------+-------------+---------------------+
    | emp.deptid  |  dept.name  |      avgsalary      |
    +-------------+-------------+---------------------+
    | 10          | ACCOUNTING  | 2916.6666666666665  |
    | 20          | RESEARCH    | 2175.0              |
    +-------------+-------------+---------------------+
    2 rows selected (31.071 seconds)
    
    
    //退出beeline
    !quit
    
    //退出hiveserver2
    Ctrl+c
    
  • 相关阅读:
    一个十年java程序员的心得
    程序员每天应该思考的5个问题,你有思考过吗?
    Java---Java的面试题(二)
    Java---Java的面试题(一)
    java中的几种取整函数
    mysql ,为什么一张表的varchar关联另一张表varchar执行失败的一个原因
    可注册两位字母+两位数字com域名大全(到2016-5-12:12时候)
    更改(修改)mysql自动增序列改变从1000开始
    HTTP状态码(HTTP Status Code)
    struts2、jsp的简单路径的简单拦截
  • 原文地址:https://www.cnblogs.com/BIG-BOSS-ZC/p/11807317.html
Copyright © 2020-2023  润新知