将hive 数据hive表导入impala到cdh集群,impala报错

Impala和Hive的关系&
  Impala是基于Hive的大数据实时分析查询引擎,直接使用Hive的元数据库Metadata,意味着impala元数据都存储在Hive的metastore中。并且impala兼容Hive的sql解析,实现了Hive的SQL语义的子集,功能还在不断的完善中。
与Hive的关系
  Impala 与Hive都是构建在Hadoop之上的数据查询工具各有不同的侧重适应面,但从客户端使用来看Impala与Hive有很多的共同之处,如数据表元数 据、ODBC/JDBC驱动、SQL语法、灵活的文件格式、存储资源池等。Impala与Hive在Hadoop中的关系如下图所示。Hive适合于长时间的批处理查询分析,而Impala适合于实时交互式SQL查询,Impala给数据分析人员提供了快速实验、验证想法的大数 据分析工具。可以先使用hive进行数据转换处理,之后使用Impala在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的方式传递。
Impala与Hive的异同
数据存储:使用相同的存储数据池都支持把数据存储于HDFS, HBase。
元数据:两者使用相同的元数据。
SQL解释处理:比较相似都是通过词法分析生成执行计划。
  执行计划:
Hive: 依赖于MapReduce执行框架,执行计划分成 map-&shuffle-&reduce-&map-&shuffle-&reduce&的模型。如果一个Query会 被编译成多轮MapReduce,则会有更多的写中间结果。由于MapReduce执行框架本身的特点,过多的中间过程会增加整个Query的执行时间。
Impala: 把执行计划表现为一棵完整的执行计划树,可以更自然地分发执行计划到各个Impalad执行查询,而不用像Hive那样把它组合成管道型的 map-&reduce模式,以此保证Impala有更好的并发性和避免不必要的中间sort与shuffle。
  数据流:
Hive: 采用推的方式,每一个计算节点计算完成后将数据主动推给后续节点。
Impala: 采用拉的方式,后续节点通过getNext主动向前面节点要数据,以此方式数据可以流式的返回给客户端,且只要有1条数据被处理完,就可以立即展现出来,而不用等到全部处理完成,更符合SQL交互式查询使用。
  内存使用:
Hive: 在执行过程中如果内存放不下所有数据,则会使用外存,以保证Query能顺序执行完。每一轮MapReduce结束,中间结果也会写入HDFS中,同样由于MapReduce执行架构的特性,shuffle过程也会有写本地磁盘的操作。
Impala: 在遇到内存放不下数据时,当前版本1.0.1是直接返回错误,而不会利用外存,以后版本应该会进行改进。这使用得Impala目前处理Query会受到一 定的限制,最好还是与Hive配合使用。Impala在多个阶段之间利用网络传输数据,在执行过程不会有写磁盘的操作(insert除外)。
  调度:
Hive: 任务调度依赖于Hadoop的调度策略。
Impala: 调度由自己完成,目前只有一种调度器simple-schedule,它会尽量满足数据的局部性,扫描数据的进程尽量靠近数据本身所在的物理机器。调度器 目前还比较简单,在SimpleScheduler::GetBackend中可以看到,现在还没有考虑负载,网络IO状况等因素进行调度。但目前 Impala已经有对执行过程的性能统计分析,应该以后版本会利用这些统计信息进行调度吧。
  容错:
Hive: 依赖于Hadoop的容错能力。
Impala: 在查询过程中,没有容错逻辑,如果在执行过程中发生故障,则直接返回错误(这与Impala的设计有关,因为Impala定位于实时查询,一次查询失败, 再查一次就好了,再查一次的成本很低)。但从整体来看,Impala是能很好的容错,所有的Impalad是对等的结构,用户可以向任何一个 Impalad提交查询,如果一个Impalad失效,其上正在运行的所有Query都将失败,但用户可以重新提交查询由其它Impalad代替执行,不 会影响服务。对于State Store目前只有一个,但当State Store失效,也不会影响服务,每个Impalad都缓存了State Store的信息,只是不能再更新集群状态,有可能会把执行任务分配给已经失效的Impalad执行,导致本次Query失败。
  适用面:
Hive: 复杂的批处理查询任务,数据转换任务。
Impala:实时数据分析,因为不支持UDF,能处理的问题域有一定的限制,与Hive配合使用,对Hive的结果数据集进行实时分析。
  Impala 与都是构建在之上的数据查询工具,但是各有不同侧重,那么我们为什么要同时使用这两个工具呢?单独使用Hive或者Impala不可以吗?
一、介绍Impala和Hive
  (1)Impala和Hive都是提供对HDFS/数据进行SQL查询的工具,Hive会转换成MapReduce,借助于YARN进行调度从而实现对HDFS的数据的访问,而Impala直接对HDFS进行数据查询。但是他们都是提供如下的标准SQL语句,在机身里运行。
            
  (2)Apache Hive是MapReduce的高级抽象,使用HiveQL,Hive可以生成运行在Hadoop集群的MapReduce或作业。Hive最初由Facebook大约在2007年开发,现在是Apache的开源项目。
  Apache Impala是高性能的专用SQL引擎,使用Impala SQL,因为Impala无需借助任何的框架,直接实现对数据块的查询,所以查询延迟毫秒级。Impala受到Google的Dremel项目启发,2012年由Cloudera开发,现在是Apache开源项目。
二、Impala和Hive有什么不同?
  (1)Hive有很多的特性:
    1、对复杂数据类型(比如arrays和maps)和窗口分析更广泛的支持
    2、高扩展性
    3、通常用于批处理
  (2)Impala更快
    1、专业的SQL引擎,提供了5x到50x更好的性能
    2、理想的交互式查询和数据分析工具
    3、更多的特性正在添加进来
三、高级概述:
        
四、为什么要使用Hive和Impala?
  1、为数据分析人员带来了海量数据分析能力,不需要软件开发经验,运用已掌握的SQL知识进行数据的分析。
  2、比直接写MapReduce或Spark具有更好的生产力,5行HiveQL/Impala SQL等同于200行或更多的代码。
  3、提供了与其他系统良好的互操作性,比如通过Java和外部脚本扩展,而且很多商业工具支持Hive和Impala。
五、Hive和Impala使用案例
  (1)日志文件分析
  日志是普遍的数据类型,是当下时代重要的数据源,结构不固定,可以通过Flume和kafka将日志采集放到HDFS,然后分析日志的结构,根据日志的分隔符去建立一个表,接下来运用Hive和Impala 进行数据的分析。例如:
      
  (2)情感分析
  很多组织使用Hive或Impala来分析社交媒体覆盖情况。例如:
          
  (3)商业智能
  很多领先的BI工具支持Hive和Impala
      
阅读(...) 评论()配置安全的Impala集群集成Sentry
配置安全的Impala集群集成Sentry
本文主要记录配置安全的Impala集群集成Sentry的过程。Impala集群上配置了Kerberos认证,并且需要提前配置好Hive与Kerberos和Sentry的集成:
使用yum安装CDH Hadoop集群
Hive配置kerberos认证
Impala配置kerberos认证
本文主要记录配置安全的Impala集群集成Sentry的过程。Impala集群上配置了Kerberos认证,并且需要提前配置好Hive与Kerberos和Sentry的集成:
使用yum安装CDH Hadoop集群
Hive配置kerberos认证
Impala配置kerberos认证
配置安全的Hive集群集成Sentry
1. 环境说明
系统环境:
操作系统:CentOs 6.6
Hadoop版本:CDH5.4
JDK版本:1.7.0_71
运行用户:root
集群各节点角色规划为:
192.168.56.121
NameNode、ResourceManager、HBase、Hive metastore、Impala Catalog、Impala statestore、Sentry
192.168.56.122
DataNode、NodeManager、HBase、Hiveserver2、Impala Server
192.168.56.123
DataNode、HBase、NodeManager、Hiveserver2、Impala Server
2. 修改Impala配置
修改 /etc/default/impala 文件中的 IMPALA_SERVER_ARGS 参数,添加:
-server_name=server1
-sentry_config=/etc/hive/conf/sentry-site.xml
在 IMPALA_CATALOG_ARGS 中添加:
-sentry_config=/etc/hive/conf/sentry-site.xml
/etc/hive/conf/sentry-site.xml 内容如下:
&?xml version="1.0" encoding="UTF-8"?&
&configuration&
&property&
&name&sentry.service.client.server.rpc-port&/name&
&value&8038&/value&
&/property&
&property&
&name&sentry.service.client.server.rpc-address&/name&
&value&cdh1&/value&
&/property&
&property&
&name&sentry.service.client.server.rpc-connection-timeout&/name&
&value&200000&/value&
&/property&
&property&
&name&sentry.provider&/name&
&value&org.apache.sentry.provider.file.HadoopGroupResourceAuthorizationProvider&/value&
&/property&
&property&
&name&sentry.hive.provider.backend&/name&
&value&org.apache.sentry.provider.db.SimpleDBProviderBackend&/value&
&/property&
&property&
&name&sentry.metastore.service.users&/name&
&value&hive&/value&&!--queries made by hive user (beeline) skip meta store check--&
&/property&
&property&
&name&sentry.hive.server&/name&
&value&server1&/value&
&/property&
&property&
&name&sentry.hive.testing.mode&/name&
&value&true&/value&
&/property&
&/configuration&
3. 重启Impala服务
在cdh1节点
5. 其他说明
如果要使用基于文件存储的方式配置Sentry store,则需要修改 /etc/default/impala 文件中的 IMPALA_SERVER_ARGS 参数,添加:
-server_name=server1
-authorization_policy_file=/user/hive/sentry/sentry-provider.ini
-authorization_policy_provider_class=org.apache.sentry.provider.file.LocalGroupResourceAuthorizationProvider
创建 sentry-provider.ini 文件并将其上传到 hdfs 的 /user/hive/sentry/ 目录:
$ cat /tmp/sentry-provider.ini
[databases]
# Defines the location of the per DB policy file for the customers DB/schema
#db1 = hdfs://cdh1:8020/user/hive/sentry/db1.ini
admin = any_operation
hive = any_operation
test = select_filtered
any_operation = server=server1-&db=*-&table=*-&action=*
select_filtered = server=server1-&db=filtered-&table=*-&action=SELECT
select_us = server=server1-&db=filtered-&table=events_usonly-&action=SELECT
test = test
hive= hive
$ hdfs dfs -rm -r /user/hive/sentry/sentry-provider.ini
$ hdfs dfs -put /tmp/sentry-provider.ini /user/hive/sentry/
$ hdfs dfs -chown hive:hive /user/hive/sentry/sentry-provider.ini
$ hdfs dfs -chmod 640 /user/hive/sentry/sentry-provider.ini
注意:server1 必须和 sentry-provider.ini 文件中的保持一致。
用云栖社区APP,舒服~
【云栖快讯】直播推荐——现在报名3月12日编程语言系列讲座,与行业资深专家一起学习Python、C++、JavaScript、Java!还可在活动页面领取红包,百分百中奖哦!&&
兼容Jenkins标准,可提供快速可靠的持续集成与持续交付服务。基于容器技术和阿里云基础服务...
业内领先的面向企业的一站式研发提效平台,通过项目流程管理和专项自动化提效工具,能够很好地支持...
立足于对政务信息化的深刻理解,在云计算和大数据技术上持续创新,构筑开放共享、敏捷高效、安全可...
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效...下次自动登录
现在的位置:
& 综合 & 正文
CDH4 impala安装配置
impala基于CDH,提供针对HDFS,hbase的实时查询,查询语句类似于hive
包括几个组件
Clients:提供Hue, ODBC clients, JDBC clients, and the Impala Shell与impala交互查询
Hive Metastore:保存数据的元数据,让impala知道数据的结构等信息
Cloudera Impala:协调查询在每个datanode上,分发并行查询任务,并将查询返回客户端
HBase and HDFS:存储数据
hadoop-2.0.0-cdh4.1.2
hive-0.9.0-cdh4.1.2
impala利用yum安装
[cloudera-impala]
name=Impala
baseurl=http://archive.cloudera.com/impala/redhat/5/x86_64/impala/1/
gpgkey = http://archive.cloudera.com/impala/redhat/5/x86_64/impala/RPM-GPG-KEY-cloudera
gpgcheck = 1
加至/etc/yum.repos.d目录下
注意cdh与hive及impala需要版本匹配,具体去impala官网去查一下
需要内存比较大,需要64位机器(推荐有点忘了是否支持32位),支持的linux版本也有要求
http://www.cloudera.com/content/cloudera-content/cloudera-docs/Impala/latest/PDF/Installing-and-Using-Impala.pdf
http://archive.cloudera.com/cdh4/cdh/4/
cdh与hive都可以在这找到
master安装 namenode,secondnamenode,ResourceManager, impala-state-store,impala-shell,hive
slave1安装 datanode,nodemanager,impala-server, impala-shell
slave2安装
datanode,nodemanager,impala-server, impala-shell
hadoop配置
在master机器上配置
$HADOOP_HOME/etc/hadoop中的core-site.xml增加
&property&
&name&io.native.lib.available&/name&
&value&true&/value&
&/property&
&property&
&name&fs.default.name&/name&
&value&hdfs://master:9000&/value&
&description&The name of the default file system.Either theliteral string "local" or a host:port for NDFS.&/description&
&final&true&/final&
&/property&
$HADOOP_HOME/etc/hadoop中的hdfs-site.xml增加
&property&
&name&dfs.namenode.name.dir&/name&
&value&file:/home/hadoop/cloudera/hadoop/dfs/name&/value&
&description&Determines where on the local filesystem the DFS namenode should store the name table.If this is a comma-delimited list ofdirectories,then name table is replicated in all of the directories,forredundancy.&/description&
&final&true&/final&
&/property&
&property&
&name&dfs.datanode.data.dir&/name&
&value&file:/home/hadoop/cloudera/hadoop/dfs/data&/value&
&description&Determines where on the local filesystem an DFS datanode should store its blocks.If this is a comma-delimited list ofdirectories,then data will be stored in all named directories,typically ondifferent devices.Directories that do not exist are
&/description&
&final&true&/final&
&/property&
&property&
&name&dfs.http.address&/name&
&value&fca-vm-arch-proxy1:50070&/value&
&/property&
&property&
&name&dfs.replication&/name&
&value&2&/value&
&/property&
&property&
&name&dfs.secondary.http.address&/name&
&value&fca-vm-arch-proxy1:50090&/value&
&/property&
&property&
&name&dfs.permission&/name&
&value&false&/value&
&/property&
$HADOOP_HOME/etc/hadoop中的mapred-site.xml增加
&property&
&name&mapreduce.framework.name&/name&
&value&yarn&/value&
&/property&
&property&
&name&mapreduce.job.tracker&/name&
&value&hdfs://fca-vm-arch-proxy1:9001&/value&
&final&true&/final&
&/property&
&property&
&name&mapreduce.map.memory.mb&/name&
&value&1536&/value&
&/property&
&property&
&name&mapreduce.map.java.opts&/name&
&value&-Xmx1024M&/value&
&/property&
&property&
&name&mapreduce.reduce.memory.mb&/name&
&value&3072&/value&
&/property&
&property&
&name&mapreduce.reduce.java.opts&/name&
&value&-Xmx2560M&/value&
&/property&
&property&
&name&mapreduce.task.io.sort.mb&/name&
&value&512&/value&
&/property&
&property&
&name&mapreduce.task.io.sort.factor&/name&
&value&100&/value&
&/property&
&property&
&name&mapreduce.reduce.shuffle.parallelcopies&/name&
&value&50&/value&
&/property&
$HADOOP_HOME/etc/hadoop/hadoop-env.sh增加
export JAVA_HOME=/jdk1.6.0_22
系统环境变量
$HOME/.bash_profile增加
export JAVA_HOME=/jdk1.6.0_22
export JAVA_BIN=${JAVA_HOME}/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/home/hadoop/cloudera/hadoop-2.0.0-cdh4.1.2
export HADOOP_MAPRED_HOME=${HADOOP_HOME}
export HADOOP_COMMON_HOME=${HADOOP_HOME}
export HADOOP_HDFS_HOME=${HADOOP_HOME}
export HADOOP_YARN_HOME=${HADOOP_HOME}
export PATH=$PATH:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${HIVE_HOME}/bin
export JAVA_HOME JAVA_BIN PATH CLASSPATH JAVA_OPTS
export HADOOP_LIB=${HADOOP_HOME}/lib
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
source $HOME/.bash_profile使变量生效
$HADOOP_HOME/etc/hadoop/yarn-site.xml中增加
&property&
&name&yarn.resourcemanager.address&/name&
&value&fca-vm-arch-proxy1:9002&/value&
&/property&
&property&
&name&yarn.resourcemanager.scheduler.address&/name&
&value&fca-vm-arch-proxy1:9003&/value&
&/property&
&property&
&name&yarn.resourcemanager.resource-tracker.address&/name&
&value&fca-vm-arch-proxy1:9004&/value&
&/property&
&property&
&name&yarn.nodemanager.aux-services&/name&
&value&mapreduce.shuffle&/value&
&/property&
&property&
&name&yarn.nodemanager.aux-services.mapreduce.shuffle.class&/name&
&value&org.apache.hadoop.mapred.ShuffleHandler&/value&
&/property&
$HADOOP_HOME/etc/hadoop/slaves增加
将master上的CDH目录及.bash_profile拷贝到slave1,slave2,并配置环境变量,并且配置好ssh无密码登陆,网上很多不详细说了
启动hdfs和yarn
以上步骤都执行完成后,用hadoop用户登录到master机器依次执行:
hdfs namenode -format
start-dfs.sh
start-yarn.sh
通过jps命令查看:
master成功启动了NameNode、ResourceManager、SecondaryNameNode进程;
slave1,slave2成功启动了DataNode、NodeManager进程。
hive只需要在master上安装因为impala-state-store需要hive读取元数据,hive又依赖于关系统型数据库(mysql)所以安装mysql
http://archive.cloudera.com/cdh4/cdh/4/
解压缩hive
$HOME/.bash_profile增加
export HIVE_HOME=/home/hadoop/hive-0.9.0-cdh4.1.2
export PATH=$PATH:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${HIVE_HOME}/bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HIVE_LIB=$HIVE_HOME/lib
source $HOME/.bash_profile使环境变量生效
在hive/lib目录下加入mysql-connector-java-5.1.8.jar
$HIVE_HOME/conf/hive.site.xml增加
&property&
&name&hive.metastore.uris&/name&
&value&thrift://master:9083&/value&
&description&Thrift uri for the remote metastore. Used by metastore client to connect to remote metastore.&/description&
&/property&
&property&
&name&hive.metastore.local&/name&
&value&false&/value&
&/property&
&property&
&name&javax.jdo.option.ConnectionURL&/name&
&value&jdbc:mysql://master:3306/hive?createDatabaseIfNoExist=true&/value&
&description&JDBC connect string for a JDBC metastore&/description&
&/property&
&property&
&name&javax.jdo.option.ConnectionDriverName&/name&
&value&com.mysql.jdbc.Driver&/value&
&description&Driver class name for a JDBC metastore&/description&
&/property&
&property&
&name&javax.jdo.option.ConnectionUserName&/name&
&value&root&/value&
&description&username to use against metastore database&/description&
&/property&
&property&
&name&javax.jdo.option.ConnectionPassword&/name&
&value&password&/value&
&description&password to use against metastore database&/description&
&/property&
&property&
&name&hive.security.authorization.enabled&/name&
&value&false&/value&
&description&enable or disable the hive client authorization&/description&
&/property&
&property&
&name&hive.security.authorization.createtable.owner.grants&/name&
&value&ALL&/value&
&description&the privileges automatically granted to the owner whenever a table gets created.
An example like "select,drop" will grant select and drop privilege to the owner of the table&/description&
&/property&
&property&
&name&hive.querylog.location&/name&
&value&${user.home}/hive-logs/querylog&/value&
&/property&
由于hive metstore我们是安装在远程节点上的所以hive.metastore.local是false
hive.metastore.uris设置远程连接metstore
验证成功状态
完成以上步骤之后,验证hive安装是否成功
在master命令行执行hive,并输入””,出现以下提示,说明hive安装成功:
Time taken: 18.952 seconds
impala安装
master上安装 impala-state-store
sudo yum install impala-state-store
master上安装 impala-shell
sudo yum install impala-shell
配置impala
修改/etc/default/impala
IMPALA_STATE_STORE_HOST=192.168.200.114
IMPALA_STATE_STORE_PORT=24000
IMPALA_BACKEND_PORT=22000
IMPALA_LOG_DIR=/var/log/impala
IMPALA_STATE_STORE_ARGS=" -log_dir=${IMPALA_LOG_DIR} -state_store_port=${IMPALA_STATE_STORE_PORT}"
IMPALA_SERVER_ARGS=" \
-log_dir=${IMPALA_LOG_DIR} \
-state_store_port=${IMPALA_STATE_STORE_PORT} \
-use_statestore \
-state_store_host=${IMPALA_STATE_STORE_HOST} \
-be_port=${IMPALA_BACKEND_PORT}"
ENABLE_CORE_DUMPS=false
LIBHDFS_OPTS=-Djava.library.path=/usr/lib/impala/lib
MYSQL_CONNECTOR_JAR=/home/hadoop/cloudera/hive/hive-0.9.0-cdh4.1.2/lib/mysql-connector-java-5.1.8.jar
IMPALA_BIN=/usr/lib/impala/sbin
IMPALA_HOME=/usr/lib/impala
HIVE_HOME=/home/hadoop/cloudera/hive/hive-0.9.0-cdh4.1.2
# HBASE_HOME=/usr/lib/hbase
IMPALA_CONF_DIR=/usr/lib/impala/conf
HADOOP_CONF_DIR=/usr/lib/impala/conf
HIVE_CONF_DIR=/usr/lib/impala/conf
# HBASE_CONF_DIR=/etc/impala/conf
拷贝hadoop的core-site.xml,hdfs-site.xml,hive的hive-site.xml到/usr/lib/impala/conf中
core-site.xml增加
&property&
&name&dfs.client.read.shortcircuit&/name&
&value&true&/value&
&/property&
&property&
&name&dfs.client.read.shortcircuit.skip.checksum&/name&
&value&false&/value&
&/property&
hdfs-site.xml增加,hadoop的hdfs-site.xml也增加
&property&
&name&dfs.datanode.hdfs-blocks-metadata.enabled&/name&
&value&true&/value&
&/property&
&property&
&name&dfs.datanode.data.dir.perm&/name&
&value&750&/value&
&/property&
&property&
&name&dfs.block.local-path-access.user&/name&
&value&hadoop&/value&
&/property&
&property&
&name&dfs.client.read.shortcircuit&/name&
&value&true&/value&
&/property&
&property&
&name&dfs.client.file-block-storage-locations.timeout&/name&
&value&3000&/value&
&/property&
&property&
&name&dfs.client.use.legacy.blockreader.local&/name&
&value&true&/value&
&/property&
拷贝mysql-connector-java-5.1.8.jar到/usr/lib/impala/lib下
拷贝mysql-connector-java-5.1.8.jar到/var/lib/impala下
拷贝/usr/lib/impala/lib/*.so*到$HADOOP_HOME/lib/native/
slave1,slave2上安装
sudo yum install impala
sudo yum install impala-server
sudo yum install impala-shell
master上的hive-site.xml,core-site.xml,hdfs-site.xml拷贝到slaver1,slaver2上,jar的拷贝与master一致
启动hive metastore
在master上执行hive --service metastore
启动impala statestore
在master上执行statestored -log_dir=/var/log/impala -state_store_port=24000
在slave1,slave2上启动impalad
sudo /etc/init.d/impala-server start
impala查看/var/log/impala/statestored.INFO是否成功 statestored.ERROR查看错误
注意先要在master启动hive metastore,impala statesored,再在slave1,slave2启动impalad-server
测试是否成功
master上执行
impala-shell
[Not connected] &connect slave1;
[slave1:21000] &
Query: use hive
[slave1:21000] &
没有错误说成功
如果在slave1上插入数据需要在slave2上refresh 表名才能同步数据,而不是网上说的refresh,后面必须加表名。
如果不是shell执行操作,应该可以同步数据,没测试过。
impala在插入数据时可以会出错
hdfsOpenFile(hdfs://fmaster:9000/user/hive/warehouse/test/.7453036......
是权限问题,因为我们是用sudo (root用户)启动的impala但是test表hadoop用户有增删改查的权限,但是root没有
hdfs dfs -chmod -R 777 /user/hive/warehouse/test
【上篇】【下篇】}

我要回帖

更多关于 impala与hive 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信