nettman 发表于 2014-1-24 23:40:22

什么是impala,如何安装使用Impala

一、Impala简介Cloudera Impala对你存储在Apache Hadoop在HDFS,HBase的数据提供直接查询互动的SQL。除了像Hive使用相同的统一存储平台,Impala也使用相同的元数据,SQL语法(Hive SQL),ODBC驱动程序和用户界面(Hue Beeswax)。Impala还提供了一个熟悉的面向批量或实时查询和统一平台。二、Impala安装
1.安装要求
(1)软件要求

[*]Red Hat Enterprise Linux (RHEL)/CentOS 6.2 (64-bit)
[*]CDH 4.1.0 or later
[*]Hive
[*]MySQL

(2)硬件要求在Join查询过程中需要将数据集加载内存中进行计算,因此对安装Impalad的内存要求较高。2、安装准备

(1)操作系统版本查看>more/etc/issueCentOSrelease 6.2 (Final)Kernel \ron an \m(2)机器准备10.28.169.112mr510.28.169.113mr610.28.169.114mr710.28.169.115mr8 各机器安装角色mr5:NameNode、ResourceManager、SecondaryNameNode、Hive、impala-state-storemr6、mr7、mr8:DataNode、NodeManager、impalad(3)用户准备在各个机器上新建用户hadoop,并打通ssh(4)软件准备到cloudera官网下载:Hadoop:hadoop-2.0.0-cdh4.1.2.tar.gzhive:hive-0.9.0-cdh4.1.2.tar.gzimpala:impala-0.3-1.p0.366.el6.x86_64.rpmimpala-debuginfo-0.3-1.p0.366.el6.x86_64.rpmimpala-server-0.3-1.p0.366.el6.x86_64.rpmimpala-shell-0.3-1.p0.366.el6.x86_64.rpmimpala依赖包下载:bigtop-utils-0.4(http://beta.cloudera.com/impala/redhat/6/x86_64/impala/0/RPMS/noarch/)其他依赖包下载地址:http://mirror.bit.edu.cn/centos/6.3/os/x86_64/Packages/4、hadoop-2.0.0-cdh4.1.2安装

(1)安装包准备hadoop用户登录到mr5机器,将hadoop-2.0.0-cdh4.1.2.tar.gz上传到/home/hadoop/目录下并解压:    tar zxvf hadoop-2.0.0-cdh4.1.2.tar.gz(2)配置环境变量修改mr5机器hadoop用户主目录/home/hadoop/下的.bash_profile环境变量:exportJAVA_HOME=/usr/jdk1.6.0_30exportJAVA_BIN=${JAVA_HOME}/binexportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexportJAVA_OPTS="-Djava.library.path=/usr/local/lib-server -Xms1024m -Xmx2048m -XX:MaxPermSize=256m -Djava.awt.headless=true-Dsun.net.client.defaultReadTimeout=60000-Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300-Dsun.net.inetaddr.ttl=300"exportHADOOP_HOME=/home/hadoop/hadoop-2.0.0-cdh4.1.2exportHADOOP_PREFIX=$HADOOP_HOMEexportHADOOP_MAPRED_HOME=${HADOOP_HOME}exportHADOOP_COMMON_HOME=${HADOOP_HOME}exportHADOOP_HDFS_HOME=${HADOOP_HOME}exportHADOOP_YARN_HOME=${HADOOP_HOME}export PATH=$PATH:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbinexportJAVA_HOME JAVA_BIN PATH CLASSPATH JAVA_OPTSexportHADOOP_LIB=${HADOOP_HOME}/libexportHADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop(3)修改配置文件在机器mr5上hadoop用户登录修改hadoop的配置文件(配置文件目录:hadoop-2.0.0-cdh4.1.2/etc/hadoop)(1)、slaves :添加以下节点mr6mr7mr8 (2)、hadoop-env.sh : 增加以下环境变量exportJAVA_HOME=/usr/jdk1.6.0_30exportHADOOP_HOME=/home/hadoop/hadoop-2.0.0-cdh4.1.2exportHADOOP_PREFIX=${HADOOP_HOME}export HADOOP_MAPRED_HOME=${HADOOP_HOME}exportHADOOP_COMMON_HOME=${HADOOP_HOME}exportHADOOP_HDFS_HOME=${HADOOP_HOME}exportHADOOP_YARN_HOME=${HADOOP_HOME}exportPATH=$PATH:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbinexportJAVA_HOME JAVA_BIN PATH CLASSPATH JAVA_OPTSexportHADOOP_LIB=${HADOOP_HOME}/libexportHADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop (3)、core-site.xml : fs.default.namehdfs://mr5:9000The name of the defaultfile system.Either the literal string "local" or a host:port forNDFS.true io.native.lib.availabletrue hadoop.tmp.dir/home/hadoop/tmpA base for other temporarydirectories. (4)、hdfs-site.xml : dfs.namenode.name.dirfile:/home/hadoop/dfsdata/nameDetermines where on thelocal filesystem the DFS name node should store the name table.If this is acomma-delimited list of directories,then name table is replicated in all of thedirectories,for redundancy.true dfs.datanode.data.dir file:/home/hadoop/dfsdata/dataDetermines where on thelocal filesystem an DFS data node should store its blocks.If this is acomma-delimited list of directories,then data will be stored in all nameddirectories,typically on different devices.Directories that do not exist areignored.true dfs.replication3 dfs.permissionfalse (5)、mapred-site.xml: mapreduce.framework.nameyarn mapreduce.job.trackerhdfs://mr5:9001true mapreduce.task.io.sort.mb512 mapreduce.task.io.sort.factor100 mapreduce.reduce.shuffle.parallelcopies50 mapreduce.cluster.temp.dir file:/home/hadoop/mapreddata/systemtrue mapreduce.cluster.local.dir file:/home/hadoop/mapreddata/localtrue (6)、yarn-env.sh :增加以下环境变量exportJAVA_HOME=/usr/jdk1.6.0_30exportHADOOP_HOME=/home/hadoop/hadoop-2.0.0-cdh4.1.2exportHADOOP_PREFIX=${HADOOP_HOME}exportHADOOP_MAPRED_HOME=${HADOOP_HOME}exportHADOOP_COMMON_HOME=${HADOOP_HOME}exportHADOOP_HDFS_HOME=${HADOOP_HOME}exportHADOOP_YARN_HOME=${HADOOP_HOME}exportPATH=$PATH:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbinexportJAVA_HOME JAVA_BIN PATH CLASSPATH JAVA_OPTSexportHADOOP_LIB=${HADOOP_HOME}/libexportHADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop (7)、yarn-site.xml:
yarn.resourcemanager.addressmr5:8080 yarn.resourcemanager.scheduler.addressmr5:8081 yarn.resourcemanager.resource-tracker.addressmr5:8082 yarn.nodemanager.aux-servicesmapreduce.shuffle yarn.nodemanager.aux-services.mapreduce.shuffle.classorg.apache.hadoop.mapred.ShuffleHandler yarn.nodemanager.local-dirsfile:/home/hadoop/nmdata/localthelocal directories used by the nodemanager yarn.nodemanager.log-dirsfile:/home/hadoop/nmdata/logthedirectories used by Nodemanagers as log directories (4)拷贝到其他节点(1)、在mr5上配置完第2步和第3步后,压缩hadoop-2.0.0-cdh4.1.2rm hadoop-2.0.0-cdh4.1.2.tar.gztarzcvf hadoop-2.0.0-cdh4.1.2.tar.gzhadoop-2.0.0-cdh4.1.2 然后将hadoop-2.0.0-cdh4.1.2.tar.gz远程拷贝到mr6、mr7、mr8机器上scp/home/hadoop/hadoop-2.0.0-cdh4.1.2.tar.gz hadoop@mr6:/home/hadoop/scp/home/hadoop/hadoop-2.0.0-cdh4.1.2.tar.gz hadoop@mr7:/home/hadoop/scp/home/hadoop/hadoop-2.0.0-cdh4.1.2.tar.gz hadoop@mr8:/home/hadoop/ (2)、将mr5机器上hadoop用户的配置环境的文件.bash_profile远程拷贝到mr6、mr7、mr8机器上scp/home/hadoop/.bash_profile hadoop@mr6:/home/hadoop/scp/home/hadoop/.bash_profile hadoop@mr7:/home/hadoop/scp/home/hadoop/.bash_profile hadoop@mr8:/home/hadoop/拷贝完成后,在mr5、mr6、mr7、mr8机器的/home/hadoop/目录下执行source.bash_profile使得环境变量生效(5)启动hdfs和yarn以上步骤都执行完成后,用hadoop用户登录到mr5机器依次执行:hdfsnamenode -formatstart-dfs.shstart-yarn.sh通过jps命令查看:mr5成功启动了NameNode、ResourceManager、SecondaryNameNode进程;mr6、mr7、mr8成功启动了DataNode、NodeManager进程。(6)验证成功状态通过以下方式查看节点的健康状态和作业的执行情况:浏览器访问(本地需要配置hosts)http://mr5:50070/dfshealth.jsphttp://mr5:8088/cluster 5、hive-0.9.0-cdh4.1.2安装

(1)安装包准备使用hadoop用户上传hive-0.9.0-cdh4.1.2到mr5机器的/home/hadoop/目录下并解压:   tar zxvf hive-0.9.0-cdh4.1.2 (2)配置环境变量在.bash_profile添加环境变量:exportHIVE_HOME=/home/hadoop/hive-0.9.0-cdh4.1.2exportPATH=$PATH:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${HIVE_HOME}/binexportHIVE_CONF_DIR=$HIVE_HOME/confexportHIVE_LIB=$HIVE_HOME/lib 添加完后执行以下命令使得环境变量生效:..bash_profile (3)修改配置文件修改hive配置文件(配置文件目录:hive-0.9.0-cdh4.1.2/conf/)在hive-0.9.0-cdh4.1.2/conf/目录下新建hive-site.xml文件,并添加以下配置信息:                       hive.metastore.local               true                     javax.jdo.option.ConnectionURL               jdbc:mysql://10.28.169.61:3306/hive_impala?createDatabaseIfNotExist=true                     javax.jdo.option.ConnectionDriverName               com.mysql.jdbc.Driver                              javax.jdo.option.ConnectionUserName                hadoop                      javax.jdo.option.ConnectionPassword               123456                    hive.security.authorization.enabled                false                      hive.security.authorization.createtable.owner.grants                ALL                      hive.querylog.location                ${user.home}/hive-logs/querylog       (4)验证成功状态完成以上步骤之后,验证hive安装是否成功在mr5命令行执行hive,并输入”show tables;”,出现以下提示,说明hive安装成功:>hivehive>show tables;OKTime taken:18.952 secondshive> 6、impala安装说明:(1)、以下1、2、3、4步是在root用户分别在mr5、mr6、mr7、mr8下执行(2)、以下第5步是在hadoop用户下执行(1)安装依赖包:安装mysql-connector-java:    yum install mysql-connector-java安装bigtoprpm -ivh bigtop-utils-0.4+300-1.cdh4.0.1.p0.1.el6.noarch.rpm安装libeventrpm -ivhlibevent-1.4.13-4.el6.x86_64.rpm如存在其他需要安装的依赖包,可以到以下链接:http://mirror.bit.edu.cn/centos/6.3/os/x86_64/Packages/进行下载。(2)安装impala的rpm,分别执行rpm -ivh impala-0.3-1.p0.366.el6.x86_64.rpmrpm -ivh impala-server-0.3-1.p0.366.el6.x86_64.rpmrpm -ivh impala-debuginfo-0.3-1.p0.366.el6.x86_64.rpmrpm -ivh impala-shell-0.3-1.p0.366.el6.x86_64.rpm(3)找到impala的安装目录完成第1步和第2步后,通过以下命令:find / -name impala输出:/usr/lib/debug/usr/lib/impala/usr/lib/impala/var/run/impala/var/log/impala/var/lib/alternatives/impala/etc/default/impala/etc/alternatives/impala 找到impala的安装目录:/usr/lib/impala(4)配置Impala在Impala安装目录/usr/lib/impala下创建conf,将hadoop中的conf文件夹下的core-site.xml、hdfs-site.xml、hive中的conf文件夹下的hive-site.xml复制到其中。在core-site.xml文件中添加如下内容: dfs.client.read.shortcircuittrue dfs.client.read.shortcircuit.skip.checksumfalse 在hadoop和impala的hdfs-site.xml文件中添加如下内容并重启hadoop和impala:             dfs.datanode.data.dir.perm755 dfs.block.local-path-access.userhadoop dfs.datanode.hdfs-blocks-metadata.enabledtrue (5)启动服务(1)、在mr5启动Impala state store,命令如下: >GLOG_v=1 nohup statestored-state_store_port=24000 &                      如果statestore正常启动,可以在/tmp/statestored.INFO查看。如果出现异常,可以查看/tmp/statestored.ERROR定位错误信息。 (2)、在mr6、mr7、mr8启动Impalad,命令如下:mr6:>GLOG_v=1 nohup impalad -state_store_host=mr5-nn=mr5 -nn_port=9000 -hostname=mr6 -ipaddress=10.28.169.113 &mr7:                                             >GLOG_v=1 nohup impalad -state_store_host=mr5-nn=mr5 -nn_port=9000 -hostname=mr7 -ipaddress=10.28.169.114 &mr8:                                             >GLOG_v=1 nohup impalad -state_store_host=mr5-nn=mr5 -nn_port=9000 -hostname=mr8 -ipaddress=10.28.169.115 &             如果impalad正常启动,可以在/tmp/impalad.INFO查看。如果出现异常,可以查看/tmp/ impalad.ERROR定位错误信息。 (6)使用shell使用impala-shell启动Impala Shell,分别连接各Impalad主机(mr6、mr7、mr8),刷新元数据,之后就可以执行shell命令。相关的命令如下(可以在任意节点执行):>impala-shell> connect mr6:21000 >refresh>connectmr7:21000>refresh>connectmr8:21000>refresh(7)验证成功状态使用impala-shell启动Impala Shell,分别连接各Impalad主机,刷新元数据,之后就可以执行shell命令。相关的命令如下(可以在任意节点执行):>impala-shell> connect mr6:21000>refresh >show databasesdefault >出现以上提示信息,说明安装成功。
三、Impala的使用

1、命令行功能
命令描述备注
connect
连接Impala节点
connect mr8:21000

describe
查看表结构
describe tab1

explain
解析SQL语句
explain select * from tab..

help
帮助命令,查看命令的说明
help connect

insert
插入数据命令
insert overwrite
insert into

quit
退出命令


refresh
刷新源数据库


select
查询语句命令


set
设置impala查询选项


shell
执行本地linux命令


show
查看表和数据库命令


use
选择使用数据库


version
查看Impala版本




set命令参数说明:
参数默认值
PARTITION_AGG
false

NUM_SCANNER_THREADS
0

MAX_IO_BUFFERS
0

MAX_SCAN_RANGE_LENGTH
0

NUM_NODES
0

DISABLE_CODEGEN
false

MAX_ERRORS
0

ABORT_ON_ERROR
false

BATCH_SIZE
0

ALLOW_UNSUPPORTED_FORMATS
false


2、当前支持的语言元素Impala的查询语言是基于Hive的HiveQL,目前impala不支持针对表和分区的DDL,但是支持DML。其实大部分的HiveQL不需要修改就可以在impala上面执行的,包括JOIN, AGGREGATE, DISTINCT, UNION ALL, ORDER BY, LIMIT 和subquery等等。(1)、selectl数据类型:boolean, tinyint, smallint, int, bigint, float, double, timestamp, stringlDISTINCTlFROM 子句支持子查询.lWHERE, GROUP BY, HAVINGlORDER BY,但是需要和limit一起使用lJOINS: Left、 right、 semi、 full and outerlUNION ALLlLIMITlExternal tablesl关系运算符:>、<、=等l算术运算符:加法、减法等l逻辑boolean操作符:and、or、not,但是impala不支持对应的&&、||、!lCOUNT, SUM, CAST, LIKE, IN, BETWEEN, 和COALESCE
说明:lJoin的时候大表一定要放在左边lJoin subsequent tables according to which table has the mostselective filter. Joining thetable with the most selective filterresults in the fewest number of rows are being returned.
(2)、insert当前版本的impala,insert只支持已经创建好的表和分区。所有表和分区结构的创建和修改只能通过HIVE来完成。现在支持的insert包括:lINSERT INTOlINSERT OVERWRITE说明:Insert命令可能会导致Hive的元数据发送改变,所以在使用impala执行查询时最好先执行一下refresh命令刷新一下hive元数据。
(3)、refresh为了准确地响应查询,impala必须要知道当前Hive中数据库的所有元数据,这样impala的客户端才能够直接进行正确查询。因此,如果使用impala客户端进行的一些操作修改hive的元数据后,最好impala的每一个节点都重新refresh,保证元数据是最新的。但是并不是所以的impala操作都需要refresh元数据。在以下几种情况下impalad实例需要refresh元数据:l当前impalad实例修改了元数据l其他比如hive或者其他的impalad实例修改了元数据l通过impala-shell命令行或者ODBC驱动程序连接impala进行的操作导致数据库发生改变Impalad实例不需要refresh的情况:l当集群中只有一个impalad实例的时候,即使这个实例修改了元数据,该impalad实例会自动更新自己的数据库元数据信息。这种情况下是不需要refresh的。l如果被修改元数据的数据库是一个后台数据库,也即impalad实例不需要连接该数据库以获得元数据的数据库,这种情况下也是不需要refresh的。Hive元数据被修改的典型情况包括:l通过Hive进行了ALTER,CREATE, DROP 或 INSERT操作l通过impalad进行了INSERT操作l   (4)、DESCRIBElDESCRIBE tableName:列出表的结构信息
(5)、SHOWlSHOW TABLES :列出所有的表lSHOW DATABASES :列出所有的数据库lSHOW SCHEMAS :列出所有的schema
(6)、USElUSE DATABASE

Impala的主要资源
[*]源代码下载:http://github.com/cloudera/impala
[*]二进制:https://ccp.cloudera.com/display/SUPPORT/Downloads
[*]文档:https://ccp.cloudera.com/display/IMPALA10BETADOC/Cloudera+Impala+1.0+Beta+Documentation
[*]邮件列表:mailto:impala-user@cloudera.org

pig2 发表于 2014-2-9 16:44:13

本帖最后由 pig2 于 2014-2-9 16:49 编辑

可以带着下面阅读此内容:
1.Impala与Hive的相似之处,区别在什么地方?
2.各自适合什么场景
这里再补充一些Impala的知识
1. Impala介绍
Impala 号称在性能上比Hive高出3~30倍,甚至预言说在将来的某一天可能会超过Hive的使用率而成为Hadoop上最流行的实时计算平台(也许我这里有点曲解Impala专家的意思,但其诱惑的言辞足以令Hadoop迷不禁有蠢蠢欲试的激动)。毕竟Impala也是人写出来的,是否真的如想象中的快,还得靠客观数据来验证。
以下内容是对Cloudera官网中关于Impala文档(主要是《Installing and Using Cloudera Impala》)一些内容的个人理解,欠妥之处还请不吝赐教:Impala的目的不在于替换现有的MapReduce工具,如Hive,而是提供一个统一的平台用于实时查询。事实上Impala的运行也是依赖Hive的元数据。Impala与其它组件之间的关系如下:http://tech.uc.cn/wp-content/uploads/2013/02/2013-08-12-205128_282x173_scrot.png与Hive类似,Impala也可以直接与HDFS和HBase库直接交互。只不过Hive和其它建立在MapReduce上的框架适合需要长时间运行的批处理任务。例如那些批量提取,转化,加载(ETL)类型的Job。而Impala主要用于实时查询。
1.1 Impala组成1.1.1 State Store
[*]对应进程为 statestored (笔者这里使用的Impala版本为0.4,有些版本的statestore进程名可能不是这样叫的)
[*]用于协调各个运行impalad的实例之间的信息关系,Impala正是通过这些信息去定位查询请求所要的数据。换句话说,state store的作用主要为跟踪各个impalad实例的位置和状态,让各个impalad实例以集群的方式运行起来。
[*]与 HDFS的NameNode不一样,虽然State Store一般只安装一份,但一旦State Store挂掉了,各个impalad实例却仍然会保持集群的方式处理查询请求,只是无法将各自的状态更新到State Store中,如果这个时候新加入一个impalad实例,则新加入的impalad实例不为现有集群中的其他impalad实例所识别(事实上,经笔者测试,如果impalad启动在statestored之后,根本无法正常启动,因为impalad启动时是需要指定statestored的主机信息的)。然而,State Store一旦重启,则所有State Store所服务的各个impalad实例(包括state store挂掉期间新加入的impalad实例)的信息(由impalad实例发给state store)都会进行重建。
1.1.2 Impalad
[*]对应进程为 impalad(核心进程,数据的计算就靠这个进程来执行)
[*]该进程应运行在DataNode机器上(建议每个DataNode机器运行一个impalad,官方的意思似乎这种建议是必须的),每个impalad实例会接收、规划并调节来自ODBC或Impala Shell等客户端的查询。每个impalad实例会充当一个Worker,处理由其它impalad实例分发出来的查询片段(query fragments)。客户端可以随便连接到任意一个impalad实例,被连接的impalad实例将充当本次查询的协调者(Ordinator),将查询分发给集群内的其它impalad实例进行并行计算。当所有计算完毕时,其它各个impalad实例将会把各自的计算结果发送给充当 Ordinator的impalad实例,由这个Ordinator实例把结果返回给客户端。每个impalad进程可以处理多个并发请求。
1.1.3 Impala shell
[*]这是一个客户端工具
[*]该客户端工具提供一个交互接口,供使用者发起数据查询或管理任务,比如连接到impalad。这些查询请求会传给ODBC这个标准查询接口。说白了,就是一个命令行客户端。日后你便是通过它来查询数据的。
1.2 安装impala这里介绍使用rpm包安装的方式(需有root或sudo权限),基于源码包安装的方式待后续折腾。1.2.1 安装前需知
[*]impala能使用的内存无法超过系统的硬件可用内存(GA版,查询需要的内存如果超出硬件内存,则查询将失败),对内存要求高,典型的硬件内存为:32~48G
[*]impala(版本0.4)只支持redhat 5.7/centos 5.7或redhat 6.2/centos 6.2以上(好像还要求是64位的,所以建议安装在64位系统上),不支持ubuntu
[*]假设你已经安装了CDH4(即Hadoop 2.0)
[*]假设你已经安装了Hive,并配置一个外部数据库(如MySQL)供Hive存储元数据。可通过执行下面的命令来判断Hive是否安装正常
$ hive
hive> show tables;
OK
Time taken: 2.809 seconds
[*]这里请原谅我没有提到Hadoop和Hive的安装过程,还请尊驾自行搜索。
[*]Impala不支持的特性:

[*]查询流数据
[*]删除数据
[*]索引(至少当前版本不支持)
[*]YARN集成(至少当前版本不支持)
[*]全文搜索
[*]不具有像Hive SerDe的可扩展机制
[*]不支持线上查询容错,如果查询出错,如机器宕机,Impala将会丢弃本次查询。
[*]不支持表和列级别的授权
[*]impalad实例之间的传输没有加密
[*]不支持Hive UFS
[*]beta版尚不支持JDBC,计划GA版支持


271592448 发表于 2014-9-29 10:39:20

很好啊。技术贴。

quenlang 发表于 2014-9-30 00:11:53

扫盲了,感谢楼主带我装B带我飞

wkf46525 发表于 2014-11-7 11:26:29

Impala的目的不在于替换现有的MapReduce工具,如Hive,而是提供一个统一的平台用于实时查询

它的的什么特性可以支持它实时查询呢,没有说明呢

Victor-Shy 发表于 2014-12-3 23:03:50

楼主想问下,cdh4.7.0应该用什么版本的impala

sstutu 发表于 2014-12-3 23:37:12

wkf46525 发表于 2014-11-7 11:26
Impala的目的不在于替换现有的MapReduce工具,如Hive,而是提供一个统一的平台用于实时查询

它的的什么 ...

Impala相对于Hive所使用的优化技术
[*]1、没有使用 MapReduce进行并行计算,虽然MapReduce是非常好的并行计算框架,但它更多的面向批处理模式,而不是面向交互式的SQL执行。与 MapReduce相比:Impala把整个查询分成一执行计划树,而不是一连串的MapReduce任务,在分发执行计划后,Impala使用拉式获取 数据的方式获取结果,把结果数据组成按执行树流式传递汇集,减少的了把中间结果写入磁盘的步骤,再从磁盘读取数据的开销。Impala使用服务的方式避免 每次执行查询都需要启动的开销,即相比Hive没了MapReduce启动时间。
[*]2、使用LLVM产生运行代码,针对特定查询生成特定代码,同时使用Inline的方式减少函数调用的开销,加快执行效率。
[*]3、充分利用可用的硬件指令(SSE4.2)。
[*]4、更好的IO调度,Impala知道数据块所在的磁盘位置能够更好的利用多磁盘的优势,同时Impala支持直接数据块读取和本地代码计算checksum。
[*]5、通过选择合适的数据存储格式可以得到最好的性能(Impala支持多种存储格式)。
[*]6、最大使用内存,中间结果不写磁盘,及时通过网络以stream的方式传递。

sstutu 发表于 2014-12-4 00:11:12

Impala与Hive的比较

本帖最后由 sstutu 于 2014-12-4 00:13 编辑

Victor-Shy 发表于 2014-12-3 23:03
楼主想问下,cdh4.7.0应该用什么版本的impala

官网都有的




Cloudera Manager文档
CDH文档等
http://www.cloudera.com/content/support/en/documentation.html
http://www.aboutyun.com/data/attachment/forum/201408/25/154544hdu8x6yt39m8639u.png


更多内容:
cloudera(CDH)官网介绍:安装包、离线包该如何下载、官方文档等介绍





Victor-Shy 发表于 2014-12-5 15:06:47

sstutu 发表于 2014-12-4 00:11
本帖最后由 sstutu 于 2014-12-4 00:13 编辑




还得请问下~impala中用的是hive的metastore,那在impala-shell中show tables的话应该是可以看到hive中的表吧?可是我的怎么不能呢,但是在hive cli中可以搜到impala下建的表。
是不是我用的cm管理的cdh,在cm中添加的impala有需要改动的?

desehawk 发表于 2014-12-5 16:54:56

Victor-Shy 发表于 2014-12-5 15:06
还得请问下~impala中用的是hive的metastore,那在impala-shell中show tables的话应该是可以看到hive中的 ...

首先确保使用的命令是正确的,参考如下:
SHOW DATABASES [ 'pattern']
SHOW SCHEMAS [ 'pattern'] - an alias for SHOW DATABASES
SHOW TABLES [ 'pattern']
SHOW FUNCTIONS [ 'pattern']
SHOW CREATE TABLE .table_name
SHOW TABLE STATS table_name
SHOW COLUMN STATS table_name
SHOW PARTITIONS table_name
例如:

show databases 'a*';
show databases like 'a*';
show tables in some_db like '*fact*';
use some_db;
show tables '*dim*|*fact*';
这个impala里面可以查到hive及impala里面的表的,
注意使用的时候,一定使用启动数据库比如:

use some_db;
然后查询里面的表数据。




英文参考:
impala SHOW Statement



impala-shell Command Reference



页: [1] 2 3
查看完整版本: 什么是impala,如何安装使用Impala