目录结构参考cloudera manager impala guide
impala概述
impala的优点
impala概念与架构
1.组件
包含三个组件
Impala Daemon是在集群的每个DataNode上运行的守护进程
职责是:
它读取和写入数据文件;
接受从Hue、JDBC或ODBC发送的查询;
并行化查询并在集群中分布工作;
并将中间查询结果发送回中央协调器节点。
Impala Statestore 集群中只需要一个节点上运行
职责是:
检查集群中所有DataNode上的Impala守护进程的健康状况,
并将其发现连续地传递给每个守护进程。
如果Impala守护进程由于硬件故障、网络错误、软件问题或其他原因而脱机,则状态表通知所有其他Impala守护进程,
以便将来查询可以避免向不可达节点发出请求。
2.开发程序
impala的核心是sql,可以通过jdbc和odbc接口去开发更多应用,对于特殊的应用
可以用java或c++通常udf函数去实现
impala的sql语法
impala的语法和hive的语法上高度兼容
IMPARA SQL侧重于查询,包括相对较少的DML。
没有更新或删除语句。
impala的接口访问
impala-shell执行去执行
hue界面访问
JDBC
ODBC
3.impala如何融入hadoop的生态系统
3.1impala工作与hive
impala与Hive共享元数据信息,在高版本上使用Impala COMPUTE STATS语句来进行表
信息统计
3.2impala元数据
对于具有大量数据和/或许多分区的表,检索表的所有元数据可能非常耗时,在某些情况下需要几分钟。
因此,每个IMPLA节点缓存所有这些元数据以重用对同一表的未来查询。
如果更新了表定义或表中的数据,
则集群中的所有其他Impala守护进程必须在对该表发出查询之前接收最新的元数据,
替换过时的缓存元数据。
在Impala1.2和更高版本中,元数据更新是Impala Catalog Service自动协调的,
用于通过Impala发布的所有DDL和DML语句。
对于通过Hive发布的DDL和DML,或者手动修改HDFS中的文件,您仍然使用REFRESH语句(当新的数据文件被添加到现有表时)
或者INVALIDATE METADATA语句(对于完全新的表,或者在删除表、执行HDFS重新平衡操作之后,或者删除数据文件。
如果知道在Impala之外只更改了特定的表,则可以为每个受影响的表发出REFRESH table_name,以便只检索这些表的最新元数据。
3.3impala与hbase
HBASE是作为IMPRA数据存储介质的HDFS的替代品。
它是一个建立在HDFS之上的数据库存储系统,没有内置SQL支持。
许多Hadoop用户已经配置并存储了大量的(通常稀疏的)数据集。
通过在Impala中定义表并将它们映射到HBase中的等效表,您可以通过Impala查询HBase表的内容,
甚至执行包括Impala表和HBase表的联接查询
impala部署安装
略
impala指南
1.impala简单使用
使用impala去查询数据
加载csv数据
主要在创建表的时候location指向指定的数据就行了
sql命令描述表结构
简单的查询例子
2.高级特性
分区表
在hive与impala切换,主要在一些hive操作数据后,在impala中刷新元数据
cross join笛卡儿积
总结来说就是Impala 1.2.2以后的版本支持笛卡儿积这种,以前的不支持
如果是大表的话,会占用大量资源
解决parquet文件不知道表结构的情况
关键步骤
create external table airlines_external
like parquet ‘hdfs://demo_host.example.com:8020/user/impala/1.parq’
stored as parquet location ‘hdfs://demo_host.example.com:8020/user/impala/staging/airlines’;
show table stats airlines_external 查看表的统计信息
show files in airlines_external 展示表的所有文件信息
describe airlines_external 现在就能查看表的结构了
impala管理
略
impala sql相关
1.注释
—
/*
*
*/
2.数据类型
| 数据类型 | 备注 |
| bigint | – .. |
| boolead | true,false |
| char | 字符不变 |
| doubal | |
| float | |
| Int | – .. |
| smaint | -32768 .. 32767 |
| string | |
| timestramp | 2015-04-09 14:07:46. |
| tinyint | -128 .. 127 |
| varchar | 可变的字符长度 |
3.sql操作
| 操作类型 | 备注 |
| 算术操作 | +-*/div %&|~^ |
| between操作 | BETWEEN lower_bound AND upper_bound |
| 比较操作 | =, !=, <> <, <=, >, >= |
| 存在操作 | EXISTS (subquery) NOT EXISTS (subquery) |
| in操作 | expression IN (expression [, expression]) expression IN (subquery) |
| not in 操作 | expression NOT IN (expression [, expression]) expression NOT IN (subquery) |
| IS NULL | Operator expression IS NULL expression IS NOT NULL |
| like操作 | string_expression LIKE wildcard_expression string_expression NOT LIKE wildcard_expression |
| 逻辑操作 | and or |
4.架构对象与对象名称
5.sql 语句
性能优化
1.方法
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218785.html原文链接:https://javaforall.net
