天天看点

impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

目录

a. 添加 impala 服务

b. impala客户端启动

c. 创建表 

d. impala进行 mapreduce 计算 

e. 分区使用

f. impala数据同步

 1.使用hive插入数据

2.impala查询数据 

3.进行数据同步 

g. impala参数

h. impala不支持的的特性

h. impala空值 NULL

 i. impala 整合 hbase 数据库

 j. impala 优化

a. 添加 impala 服务

impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

 Kudu是Hadoop生态系统中一个真正的列存储。

impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

在进行继续的时候,由于在安装 impala 的时候,会导致集群中所有的服务进行重启,所以这里的下一步会执行失败,但是没有关系,因为 安装 impala 的配置文件已经在 节点上配置成功,执行失败也可以回到主页,然后手动的对各个服务进行重启,没有问题的。

在回到主页的时候,hdfs 服务会显示配置过期,这个时候需要进行重启(不要勾选重新部署客户端),重启的时候可能会重启失败(重启完服务依然不能正常使用),多尝试几次就可以了,由于是使用的虚拟机,并且物理机的内存也不够用,导致系统很卡,恢复正常的时间比较长,好几个小时,我这个集群才反应过来。

impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

可以看到集群中分配的内存全部用完,并且发生内存交换,多点耐心,多尝试几次重启,(如果在安装impala之前的服务都运行正常)那最终就会变得正常。 

impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

b. impala客户端启动

impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

c. 创建表 

在 impala 客户端创建表, hive 端可以实时看到表

impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

d. impala进行 mapreduce 计算 

hive在执行 MapReduce 操作的时候,导致集群环境运行异常,无法正常使用

我这里要做的内容是,对比一下 impala 和 hive 在执行 MapReduce 任务的耗时(impala是完全基于内存的,所以执行的速度比较快),看来是没有办法实验了。

select count(*) name from student;
           
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

在使用impala 进行查询的时候速度非常快(第一次进行MapReduce计算的时候可能会有点慢,因为系统需要加载表的资源,后面再次进行计算的时候资源已经位于内存中了,计算的速度就比较快了)

impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

在shell会话中,

-B 表示将查询的数据去格式化(只显示表中的数据,不显示字段信息),

-q 表示执行完命令后,不进入 impala-shell 的会话

>  表示将查询的内容追加到  impalaStudent 文件中 ,

impala-shell -B -q "select * from student;" > impalaStudent
           
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

查询结果不去格式化(正常输出) 

impala-shell -q "select * from student;" > impalaStudent
           
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

e. 分区使用

创建表

-- 创建表
create table psnpartition(
	id int, 
	name string, 
	aget int)
	partitioned by(type string);

-- 增加分区
alter table psnpartition add partition(sex='boss');

-- 添加数据
insert into psnpartition partition(type='boss') values
	(1, 'xiaozhang',18),
	(2, 'xiaoli',23);
	
insert into psnpartition partition(type='coder') values
	(3, 'daming',20),
	(4, 'erming',21);
	
insert into psnpartition partition(type='coder') values
	(3, 'tangsan',22),
	(4, 'xiaowu',23);
           
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

在使用 insert into 进行插入数据的时候,每执行一次该命令,就会产生一个hdfs 文件,这样会造成文件系统中小文件太多,影响系统的效率。 

impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

使用 clouderaManager 进行服务的安装之后,hdfs 文件系统会产生权限的认证,通过直接访问9870 端口,是无法正常的查看文件的。

impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

查询数据

select * from psnpartition where type='coder' and name='tangsan';
           
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

f. impala数据同步

refresh  tableName 刷新指定表的元数据,将表新增的元数据新加载到内存(增量刷新)

invalidate metadata 默认将全部的表的元数据进行刷新

invalidate metadata refresh
语法 INVALIDATE METADATA [[db_name.]table_name] REFRESH [table] PARTITION [partition]
执行方式 异步 同步
操作 重量级 轻量级(速度快)
使用场景 表的schema改变

表数据改变(增,删,重命名)

表的数据实际上是文件(增,删,重命名)是针对数据文件

 1.使用hive插入数据

通过 hive 进行数据的插入,显示没有权限对数据文件进行修改

load data local inpath '/root/psnpartitiondate' into table psnpartition partition (type='coder');
           

psnpartitiondate 文件的数据

5 pangzi 24
6 zhuqing 25
           
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

修改 hdfs 中 /user/hive 文件夹的权限

sudo -uhdfs hdfs dfs -chmod -R 777 /user/hive/
           
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

这个时候,通过 hive 会话查询,可以查到数据,由于在建表的时候,没有指定数据字段的解析方式,导致查询的时候识别不出来(同时验证 hive 读检查) 

impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

2.impala查询数据 

通过 impala 会话查询数据,发现没有新增加的两条数据。 

impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

3.进行数据同步 

refresh  tableName 刷新指定表的元数据,将表新增的元数据新加载到内存(增量刷新)

操作是同步的,命令执行完数据就完成了刷新

REFRESH [table] PARTITION [partition]

refresh psnpartition;
           
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

invalidate metadata 默认将全部的表的元数据进行刷新

操作是异步的,虽然命令执行完了,但是后台仍然在执行数据的同步

INVALIDATE   METADATA   [[db_name.]table_name]

是用于刷新全库或者某个表的元数据,包括表的元数据和表内的文件数据,它会首先清除表的缓存,然后从metastore中重新加载全部数据并缓存,该操作代价比较重,主要用于在hive中修改了表的元数据,例如create table/drop table/alter table add columns等,即改变的表的结构。

invalidate metadata psnpartition;
           
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

g. impala参数

-V 参数可以看到命令执行的详细内容

impala-shell -V
           
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

h. impala不支持的的特性

impala 是 hive 的子集,impala的唯一的优点是,完全基于内存计算速度比较快,同时 impala 要求的硬件尤其是内存比较高

impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

h. impala空值 NULL

impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

 i. impala 整合 hbase 数据库

在 hive 上面创建的是 外部表,hive 和 impala 是无缝连的,现在将 hive 与 hbase 进行整合后,间接的相当于 impala 和 hbase 数据库是连接起来的

CREATE EXTERNAL TABLE test_info (key string, name string)
   ROW FORMAT SERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe'
   STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
   WITH SERDEPROPERTIES ("hbase.columns.mapping"=":key,info:name")
   TBLPROPERTIES 
   ("hbase.table.name"="test_info");
           
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

 j. impala 优化

impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化
impala使用a. 添加 impala 服务b. impala客户端启动c. 创建表 d. impala进行 mapreduce 计算 e. 分区使用f. impala数据同步g. impala参数h. impala不支持的的特性h. impala空值 NULL i. impala 整合 hbase 数据库 j. impala 优化

继续阅读