Hive---hive的安装详细步骤及连接

Hive(海量的结构化的运算分析工具)
Hive是基于Hadoop的一个数据仓库工具(服务性的软件),k可以将结构化的数据文件映射为一张表,
并提供类似于SQL查询.
1) Hive处理的数据存储在HDFS(结构化数据)
2) Hive分析数据底层的实现是MapReduce/spark(分布式运算框架)
3) 执行程序运行在Tarn上
注意: hive不支持 delete(删除) update(更新)
Hive的安装详细步骤
1.mysql数据 远程连接权限

1)  mysql -uroot  -proot
			2)  set global validate_password_policy=0;
			3)  set global validate_password_length=1; --这个两个设置以后 密码很简单不会报错
			4)  grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
			5)  flush privileges;
	2.HDFS  start-all.sh
	3.hive  解压 配置   mysql的驱动包
	
	4.vi conf/hive-env.sh 	
export HADOOP_HOME=/opt/apps/hadoop-3.1.1/
export HIVE_CONF_DIR=/opt/apps/hive-3.1.2/conf
5.vi hive-site.xml
			<configuration>
			<!-- 记录HIve中的元数据信息  记录在mysql中 -->
			<property>
			<name>javax.jdo.option.ConnectionURL</name>
			<value>jdbc:mysql://linux01:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>
			</property>
			<property>
			<name>javax.jdo.option.ConnectionDriverName</name>
			<value>com.mysql.jdbc.Driver</value>
			</property>
			<!-- mysql的用户名和密码 -->
			<property>
			<name>javax.jdo.option.ConnectionUserName</name>
			<value>root</value>
			</property>
			<property>
			<name>javax.jdo.option.ConnectionPassword</name>
			<value>root</value>
			</property>

			<property>
			<name>hive.metastore.warehouse.dir</name>
			<value>/user/hive/warehouse</value>
			</property>

			<property>
			<name>hive.exec.scratchdir</name>
			<value>/user/hive/tmp</value>
			</property>
			<property>
			<name>hive.querylog.location</name>
			<value>/user/hive/log</value>
			</property>
			<!-- 客户端远程连接的端口 -->
			<property> 
			<name>hive.server2.thrift.port</name> 
			<value>10000</value>
			</property>
			<property> 
			<name>hive.server2.thrift.bind.host</name> 
			<value>0.0.0.0</value>
			</property>
			<property>
			<name>hive.server2.webui.host</name>
			<value>0.0.0.0</value>
			</property>
			<!-- hive服务的页面的端口 -->
			<property>
			<name>hive.server2.webui.port</name>
			<value>10002</value>
			</property>
			<property> 
			<name>hive.server2.long.polling.timeout</name> 
			<value>5000</value>                               
			</property>
			<property>
			<name>hive.server2.enable.doAs</name>
			<value>true</value>
			</property>
			<property>
			<name>datanucleus.autoCreateSchema</name>
			<value>false</value>
			</property>
			<property>
			<name>datanucleus.fixedDatastore</name>
			<value>true</value>
			</property>

			<property>
			<name>hive.execution.engine</name>
			<value>mr</value>
			</property>
			<!-- 添加元数据服务配置 -->
			<property>
				 <name>hive.metastore.local</name>
				 <value>false</value>
				 <description>controls whether to connect to remove metastore server or open a new metastore server in Hive Client JVM</description>
			</property>
			<property>
				<name>hive.metastore.uris</name>
				 <value>thrift://linux01:9083</value>
			</property>
			</configuration>

		6.vi /opt/apps/hadoop-3.1.1/etc/hadoop/core-site.xml 
			<property>
			<name>dfs.permissions.enabled</name>
			<value>false</value>
			</property>

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

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

		7重启hadoop
			stop_all.sh 关闭
			start_all.sh 开启
		8 配置环境变量
			vi /etc/profile
		9 初始化
		    bin/schematool -initSchema -dbType  mysql
		10 开启元数据服务 
			hive --service  metastore  & 后台启动 
					[root@linux01 ~]# netstat -nltp  | grep  9083/10000
					tcp6       0      0 :::9083               

		11 启动测试(HDFS正常)
			hive
**处理HDFS上的结构化数据** 
1.创建一个结构化的文件
			1,zss,18,F
			2,lss,28,M
			3,www,38,F
			4,zll,48,M
		2.上传到HDFS的目录下
		3.根据数据的内容建表
			create table tb_log(
				id int,
				name String,
				age int,
				gender String
				)
			row format  delimited fields terminated by ',' (格式化,,切割)
			location 'hdfs://linux01:8020/data/log/' ;	   (数据的位置)
		4.查询
			select * from tb_log;
**Hive的连接方式**
	1.在本地执行 hive 命令
		本地模式进入到hive的客户终端
	2.通过远程连接方式 开启hiveserver2 服务
		1)jdbc连接 jdbc:hive2://linux01:10000
		2)beeline 窗口 jdbc:hive2://linux01:10000
			!connect jdbc:hive2://linux01:10000  用户:root 密码:没有 直接回车
**idea连接hive**
		1.添加依赖
		<dependencies>
			<dependency>
				<groupId>org.apache.hive</groupId>
				<artifactId>hive-jdbc</artifactId>
				<version>1.2.1</version>
            </dependency>
		</dependencies>
		2. hive --> new --> data Source --> apache Hive 更改name和URL
		3. 右边database
常用数据类型
	int		bigint		double		string		timestamp
集合数据类型
	struct(结构体)对象		map映射		array数组
	
**在hive中的表分两种** 
	 1) external  外部表 
		create external table tb_log2(  --外部表 
		id int ,
		name string 
		)
		row format delimited fields terminated by "," 
		location  '/data/log/' ;
	 2) 默认的    内部表  管理表  managertable
		管理表不需要指定位置 使用默认的位置(以表名称为文件夹)
		create table tb_log5(
		id int ,
		name string 
		)
		row format delimited fields terminated by "," ;
		location  '/data/log/' ; -- 管理表 (管理表不需要location)
		drop  table tb_log2 ;  -- 指定的路径下的数据会被删除
		select * from tb_log ;  --没有数据  
		drop  table tb_log2 ;  -- 指定的路径下的数据不会被删除
		select * from tb_log ;  --有数据    没有收别的表影响
		**问?  什么是内部表 什么是外部表 ?  什么时候使用内部表  什么时候使用外部表**
		1 公共/原始数据  使用外部表
		2 业务有关的业务报表使用管理表(内部表)

desc tb_log: 字段信息
desc formatted tb_log: 表的信息(表字段 位置 类型(内部 外部表) 输入数据类型 分隔符)

导入数据
	hive是使用SQL语句 处理HDFS上的结构化数据
	1.建表的时候指定location 结构化数据的位置文件夹 外部表
	2.可以将结构化数据直接put到表目录中  mv到指定的目录
	3.load data local inpath "data/user.csv" into table tb_user:  --底层就是put 本地追加
	  load data inpath "/iser.csv" into table tb_user:   --底层move   追加      hdfs追加
	  load data inpath "/iser.csv" overwrite into table tb_user:  --底层move  overwrite覆盖  hdfs覆盖
	
创建数据库
	create database if not exists a_log ;  --如果不存在就创建a_log
	user a_log;							   --切换到_a.log
	create table a_log(
	uid int,
	name string
	)
	row farmat delimited fields terminated by "\t"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值