什么是impala 安装部署,如何安装使用impala 安装部署

6224人阅读
hadoop学习(8)
impala安装
1.&&&&&& 部署方案
192.168.156.2
journalnode
Namenode(主) Resourcemanager(备)
192.168.156.3
Journalnode
Namenode(备) Resourcemanager(主)
Impala-state-store
impala-catalog
192.168.156.4
Nodemanager
Impala-server
Journalnode
192.168.156.5
Nodemanager
Impala-server
192.168.156.6
Nodemanager
Impala-server
192.168.156.7
Nodemanager
Impala-server
192.168.156.8
Nodemanager
Impala-server
部署说明:
1)& 此集群中总共7台机器,hadoop01和hadoop02内存是64G,hadoop03~hadoop07都是内存为230G,所以将hadoop01,hadoop02作为管理节点,hadoop03~hadoop07作为数据节点。
2)& impala整体分为三部分:impala-state-store,impala-catalog,impala-server。
?&impala-state-store在集群中主要用于协调各个运行impala的实例之间的信息关系,impala正是通过这些信息去定位查询请求所要的数据,换句话说就是主要跟踪各个impala实例的位置和状态,让各个impalad实例以集群的方式运行起来,相当于一个管理节点。
?&impala-catalog是同步hive和impala元数据的工具服务。
?&impala-server是impala的核心进程,数据的计算就靠这个进程来执行,是分布式的存在于集群中的worker进程,该进程应运行在DataNode机器上,impala-server的进程是impalad,每个impalad实例会接收、规划并调节来自ODBC或Impala Shell等客户端的查询。
&所以在集群中,将impala-state-store,impala-catalog这两个服务必须安装在hadoop集群的namenode节点上,impala-server、impala-shell服务安装在各个datanode上。
2.&&&&&& 部署准备
1)& impala的安装以及启停都必须在root用户下执行。
2)& 安装impala之前首先需要安装impala需要的依赖包,这些依赖包都必须用yum库来安装,所以在安装之前必须挂载好本地系统镜像iso,并且配置好本地yum源。
3)& 可以用“yum list | grep 包名”命令来查看yum源里有没有某些包,用“yum deplist 包名”来查看包的依赖关系。
4)& 下载impala5.3.1源码和安装包
在有源码和安装包,
这里让下载源码是因为有可能在安装的过程中会缺少某些依赖包,我们就可以直接到源码里去找到对应版本的依赖包。
需要下载的impala包有:
3.&&&&&& 安装依赖包,注意:这些依赖包在每一个节点上都要进行安装!
1)& 安装mysql-connector-java
yuminstall mysql-connector-java
2)& 安装bigtop
yuminstall bigtop-jsvc-0.6.0+cdh5.0.0+427-1.cdh5.0.0.p0.34.el6.x86_64
yuminstall bigtop-utils-0.7.0+cdh5.0.0+0-1.cdh5.0.0.p0.36.el6.noarch
3)& 安装libevent
yuminstall libevent*
4)& 安装redhat-lsb
yuminstall redhat-lsb
5)& 安装python-setuptools:
yuminstall python-setuptools
6)& 安装sasl
yuminstall cyrus-sasl.x86_64 –y
4.&&&&&& 在namenode节点(本集群中规划的是hadoop02)上安装以下impala安装包,注意:以下安装包必须在root用户下执行。
1)& rpm -ivh &–nodeps
2)& rpm -ivh
3)&& rpm -ivh
4)& rpm -ivhimpala-udf-devel-2.1.1+cdh5.3.1+0-1.cdh5.3.1.p0.17.el6.x86_64.rpm
5.&&&&&& 在每一个datanode节点安装一下impala安装包,注意:以下安装包必须在root用户下执行。
1)&&&&&&&&rpm -ivh &-nodeps
2)&&&&&&&&rpm-ivh impala-shell-2.1.1+cdh5.3.1+0-1.cdh5.3.1.p0.17.el6.x86_64.rpm
3)&&&&&&&&rpm-ivh impala-udf-devel-2.1.1+cdh5.3.1+0-1.cdh5.3.1.p0.17.el6.x86_64.rpm
4)&&&&&&&&rpm-ivh impala-server-2.1.1+cdh5.3.1+0-1.cdh5.3.1.p0.17.el6.x86_64.rpm
6.&&&&&& 至此,impala的安装包已经安装到各个节点上,下来可以通过find / -name impala命令来查看每一个节点impala的安装目录,执行此命令后会输出:
/usr/lib/impala
/etc/default/impala
/etc/alternatives/impala
/etc/impala
/var/run/impala
/var/log/impala
/var/lib/impala
/var/lib/alternatives/impala
7.&&&&&& 配置impala,配置时先在一台机器上将所有该配置的变量配置好之后,然后再拷贝到所有其他的机器中,我这边先在hadoop02上进行配置。
1)&&&&&&&&配置hdfs-site.xml
&property&
&&&&&&&&& &name&dfs.client.read.shortcircuit&/name&
&&&&&&&&& &value&true&/value&
&&&&& &/property&
&&&&& &property&
&&&&&&&&& &name&dfs.domain.socket.path&/name&
&&&&&&&&&&value&/var/run/hadoop-hdfs/dn._PORT&/value&
&&&&& &/property&&&&
&&&&& &property&
&&&&&&&&& &name&dfs.client.file-block-storage-locations.timeout.millis&/name&
&&&&&&&&& &value&10000&/value&
&&&&& &/property&
&&&&& &property&
&&&&&&&&&&name&dfs.client.read.shortcircuit.skip.checksum&/name&
&&&&&&&&& &value&false&/value&
&&&&& &/property&
&&&&& &property&
&&&&&&&&&&name&dfs.datanode.hdfs-blocks-metadata.enabled&/name&
&&&&&&&&& &value&true&/value&
&&&&& &/property&
&&&&& &property&
&&&&&&&&&&name&dfs.client.use.legacy.blockreader.local&/name&
&&&&&&&&& &value&false&/value&
&&&&& &/property&
&&&&& &property&
&&&&&&&&&&name&dfs.datanode.data.dir.perm&/name&
&&&&&&&&& &value&750&/value&
&&&&& &/property&
&&&&& &property&
&&&&&&&&&&name&dfs.block.local-path-access.user&/name&
&&&&&&&&& &value&e3base&/value&
&&&&& &/property&
&&&&& &property&
&&&&&&&&& &name&hadoop.native.lib&/name&
&&&&&&&&& &value&true&/value&
&&&&&&&&& &description&Should nativehadoop libraries, if present, be used.&/description&
&&&&& &/property&
上述配置中,红色字体部分都需要根据实际情况进行修改,其具体说明如下:
?& dfs.client.read.shortcircuit指定的是短路读,针对本地数据,如果启用了short-circuit reads,impala就能直接读取文件系统的数据,这样就避免需要与DataNode的通信。此设置也最大限度地减少了额外的数据副本。
?& dfs.datanode.hdfs-blocks-metadata.enabled指定的是数据块位置以及启用data block位置跟踪,那么impala就能快速定位data block在磁盘中位置,从而更好地利用底层磁盘。
?& hadoop.native.lib指定的是本地校验和:如果启用native check-summing,那么impala会使用一个优化的native check-summing库来提升impala的性能。这个库文件在impala安装路径的lib目录下:libhadoop.so。
2)&&&&&&&&配置hive-site.xml
&property&
& &name&hive.metastore.uris&/name&
& &value&thrift://192.168.156.3:9083&/value&
&/property&
&property&
&&name&hive.metastore.client.socket.timeout&/name&
& &value&3600&/value&
& &description&MetaStore Client sockettimeout in seconds&/description&
&/property&
其中红色字体部分表示表示metostore的uri,我们的机器中将hive安装在hadoop02(192.168.156.3)上。
3)&&&&&&&&配置impala的参数,impala的配置文件在/etc/default/impala之中。
IMPALA_CATALOG_SERVICE_HOST=192.168.156.3
IMPALA_STATE_STORE_HOST=192.168.156.3
IMPALA_STATE_STORE_PORT=24000
IMPALA_BACKEND_PORT=22000
IMPALA_LOG_DIR=/var/log/impala
IMPALA_CATALOG_ARGS=&-log_dir=${IMPALA_LOG_DIR} &
IMPALA_STATE_STORE_ARGS=&-log_dir=${IMPALA_LOG_DIR} -state_store_port=${IMPAL
A_STATE_STORE_PORT}&
IMPALA_SERVER_ARGS=&\
&&& -log_dir=${IMPALA_LOG_DIR} \
&&&-catalog_service_host=${IMPALA_CATALOG_SERVICE_HOST} \
&&&-state_store_port=${IMPALA_STATE_STORE_PORT} \
&&& -use_statestore \
&&& -state_store_host=${IMPALA_STATE_STORE_HOST}\
&&& -be_port=${IMPALA_BACKEND_PORT}& \
&&& -mem_limit=60%&&&&
ENABLE_CORE_DUMPS=false
&LIBHDFS_OPTS=-Djava.library.path=/usr/lib/impala/lib
&MYSQL_CONNECTOR_JAR=/usr/share/java/mysql-connector-java.jar
&HADOOP_HOME=/e3base/clusterApp/hadoop
&HIVE_HOME=/e3base/clusterApp/hive
配置说明:
l&IMPALA_CATALOG_SERVICE_HOST指定的是catalog服务器的IP
l&IMPALA_STATE_STORE_HOST指定的是StateStore服务器IP
l&-mem_limit=70%指定的是impalad内存使用限制
l&LIBHDFS_OPTS=-Djava.library.path指定的是impala依赖的第三方库
l&MYSQL_CONNECTOR_JAR指定的是mysql-connector-java*路径
l&IMPALA_BIN指定的是impala可执行文件的路径
l&IMPALA_HOME指定的impala的安装路径
l&HIVE_HOME指定的是hive的安装路径
l&HBASE_HOME指定的是hbase的安装路径
l&IMPALA_CONF_DIR指定的是impala的配置路径
l&HADOOP_CONF_DIR指定的是hadoop的配置路径
l&HIVE_CONF_DIR指定的是hive的配置路径
l&HBASE_CONF_DIR指定的是hbase的配置路径
4)&&&&&&&&在/etc/default/bigtop-utils中设置JAVA_HOME
exportJAVA_HOME=/usr/local/jdk1.7.0_51
exportCLASSPATH=./:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH
5) & & &进入/etc/init.d目录 &修改impala-catalog操作权限,将如下设置中的红色字体由impal改成集群的用户名。
DAEMON=&catalogd&
DESC=&ImpalaCatalog Server&
EXEC_PATH=&/usr/bin/catalogd&
EXEC_DIR=&&
SVC_USER=&e3base&
DAEMON_FLAGS=&${IMPALA_CATALOG_ARGS}&
CONF_DIR=&/etc/impala/conf&
PIDFILE=&/var/run/impala/catalogd-impala.pid&
LOCKDIR=&/var/lock/subsys&
LOCKFILE=&$LOCKDIR/catalogd&
WORKING_DIR=&~/&
install -d-m 0755 -o e3base -g
e3base /var/run/impala 1&/dev/null2&&1 || :
[ -d &$LOCKDIR& ] || install -d -m 0755 $LOCKDIR 1&/dev/null2&&1 || :
6) & & & &进入/etc/init.d目录修改impala-state-store操作权限,将如下设置中的红色字体由impal改成集群的用户名。
DAEMON=&statestored&
DESC=&ImpalaState Store Server&
EXEC_PATH=&/usr/bin/statestored&
EXEC_DIR=&&
SVC_USER=&e3base&
DAEMON_FLAGS=&${IMPALA_STATE_STORE_ARGS}&
CONF_DIR=&/etc/impala/conf&
PIDFILE=&/var/run/impala/statestored-impala.pid&
LOCKDIR=&/var/lock/subsys&
LOCKFILE=&$LOCKDIR/statestored&
WORKING_DIR=&~/&
install -d-m 0755 -o e3base -g
e3base /var/run/impala 1&/dev/null2&&1 || :
[ -d &$LOCKDIR& ] || install -d -m 0755 $LOCKDIR 1&/dev/null2&&1 || :
7) & & & &进入/etc/init.d目录修改impala-server操作权限,将如下设置中的红色字体由impal改成集群的用户名。
DAEMON=&impalad&
DESC=&ImpalaServer&
EXEC_PATH=&/usr/bin/impalad&
EXEC_DIR=&&
SVC_USER=&e3base&
DAEMON_FLAGS=&${IMPALA_SERVER_ARGS}&
CONF_DIR=&/etc/impala/conf&
PIDFILE=&/var/run/impala/impalad-impala.pid&
LOCKDIR=&/var/lock/subsys&
LOCKFILE=&$LOCKDIR/impalad&
WORKING_DIR=&~/&
install -d-m 0755 -o e3base -g
e3base /var/run/impala 1&/dev/null2&&1 || :
[ -d &$LOCKDIR& ] || install -d -m 0755 $LOCKDIR 1&/dev/null2&&1 || :
8)&&&&&&&&将hadoop安装目录下的hdfs-site.xml,core-site.xml拷贝到/etc/impala/conf目录下
cp /e3base/clusterApp/hadoop/etc/hadoop/hdfs-site.xml &/etc/impala/conf
cp /e3base/clusterApp/hadoop/etc/hadoop/core-site.xml &/etc/impala/conf
9)&&&&&&&&将hive安装目录下的hive-site.xml拷贝到/etc/impala/conf目录下
cp /e3base/clusterApp/hive/conf/hive-site.xml /etc/impala/conf
10)&&&& 将$HIVE_HOME/lib/ mysql-connector-java-5.1.20-bin.jar拷贝到/usr/share/java目录下,并将mysql-connector-java-5.1.20-bin.jar文件改名为mysql-connector-java.jar。
cp /e3base/clusterApp/hive/lib/mysql-connector-java-5.1.20-bin.jar/usr/share/java&
mv mysql-connector-java-5.1.20-bin.jar mysql-connector-java.jar
11)&&&& 写脚本更换impala依赖库
cd/usr/lib/impala/lib
rm-rf libh*
cp/e3base/clusterApp/hadoop/lib/native/libh* .
rm-rf hadoop*
rm-rf hive*
rm-rf hbase*
rm-rf zookeeper*
HADOOP_LIB=/e3base/clusterApp/hadoop/share/hadoop
HIVE_LIB=/e3base/clusterApp/hive/lib
IMPALA_PATH=/usr/lib/impala/lib
cp$HADOOP_LIB/common/lib/hadoop-annotations-2.5.0-cdh5.3.1.jar$IMPALA_PATH/hadoop-annotations.jar
cp$HADOOP_LIB/common/lib/hadoop-auth-2.5.0-cdh5.3.1.jar$IMPALA_PATH/hadoop-auth.jar
cp$HADOOP_LIB/common/hadoop-common-2.5.0-cdh5.3.1.jar$IMPALA_PATH/hadoop-common.jar
cp$HADOOP_LIB/hdfs/hadoop-hdfs-2.5.0-cdh5.3.1.jar $IMPALA_PATH/hadoop-hdfs.jar
cp$HADOOP_LIB/mapreduce/hadoop-mapreduce-client-core-2.5.0-cdh5.3.1.jar$IMPALA_PATH/hadoop-map
reduce-client-core.jar
cp$HADOOP_LIB/yarn/hadoop-yarn-api-2.5.0-cdh5.3.1.jar$IMPALA_PATH/hadoop-yarn-api.jar
cp$HADOOP_LIB/yarn/hadoop-yarn-common-2.5.0-cdh5.3.1.jar$IMPALA_PATH/hadoop-yarn-common.jar
cp $HADOOP_LIB/yarn/hadoop-yarn-server-common-2.5.0-cdh5.3.1.jar$IMPALA_PATH/hadoop-yarn-
server-common.jar
cp$HADOOP_LIB/yarn/hadoop-yarn-server-resourcemanager-2.5.0-cdh5.3.1.jar$IMPALA_PATH/hadoop-yarn-
server-resourcemanager.jar
cp $HADOOP_LIB/yarn/hadoop-yarn-server-web-proxy-2.5.0-cdh5.3.1.jar$IMPALA_PATH/hadoop-yarn-
server-web-proxy.jar
cp$HIVE_LIB/hive-ant-0.13.1-cdh5.3.1.jar&$IMPALA_PATH/hive-ant.jar
cp $HIVE_LIB/hive-common-0.13.1-cdh5.3.1.jar$IMPALA_PATH/hive-common.jar
cp $HIVE_LIB/hive-exec-0.13.1-cdh5.3.1.jar$IMPALA_PATH/hive-exec.jar
cp$HIVE_LIB/hive-hbase-handler-0.13.1-cdh5.3.1.jar$IMPALA_PATH/hive-hbase-handler.jar
cp $HIVE_LIB/hive-jdbc-0.13.1-cdh5.3.1.jar$IMPALA_PATH/hive-jdbc.jar
cp $HIVE_LIB/hive-metastore-0.13.1-cdh5.3.1.jar$IMPALA_PATH/hive-metastore.jar
cp $HIVE_LIB/hive-serde-0.13.1-cdh5.3.1.jar$IMPALA_PATH/hive-serde.jar
cp$HIVE_LIB/hive-service-0.13.1-cdh5.3.1.jar $IMPALA_PATH/hive-service.jar
cp$HIVE_LIB/hive-shims-common-0.13.1-cdh5.3.1.jar $IMPALA_PATH/hive-shims-common.jar
cp$HIVE_LIB/hive-shims-common-secure-0.13.1-cdh5.3.1.jar$IMPALA_PATH/hive-shims-common-secure.jar
cp $HIVE_LIB/hive-shims-0.13.1-cdh5.3.1.jar$IMPALA_PATH/hive-shims.jar
脚本说明:
脚本刚开始进入/usr/lib/impala/lib目录,这个目录是impala依赖库的目录
然后删除/usr/lib/impala/lib目录下的libh开头的所有包
然后删除/usr/lib/impala/lib目录下的以hadoop开头的所有包
然后删除/usr/lib/iimpala/lib目录下的以hive开头的所有包
然后删除/usr/lib/impala/lib目录下的以hbase开头的所有包
然后删除/usr/lib/impala/lib目录下的以zookeeper开头的所有包
然后把集群中hadoop安装目录下的$HADOOP_HOME/lib/native目录下的所有libh开头的包,拷贝/usr/lib/impala/lib目录下
然后设置hadoop的依赖包的源目录/e3base/clusterApp/hadoop/share/hadoop
然后设置hive的依赖包的源目录/e3base/clusterApp/hive/lib
然后设置impala的依赖包的目录/usr/lib/impala/lib
然后分别把hadoop源目录下的文件依次拷入impala依赖包目录
然后分别把hive源目录下的文件依次考入impala依赖包目录下
在此要注意两点:
l&&安装时拷贝了这个脚本之后要根据hadoop和hive依赖包源目录中的文件的版本,对此脚本进行更改。
l&&此操作不能将所有的依赖包全部包含进去,所以在最后启动时,要到impala日志目录/usr/log/impala中去查看错误日志,在错误日志中会显示到底是哪个包没有被拷贝进来,找到这个包名之后,就到之前下载的impala源码包里去找,找到之后拷贝进/usr/lib/impala/lib,直到impala能够正常启动!这点特别重要!
12)&&&& 创建/var/run/hadoop-hdfs,/var/run/impala文件夹
mkdir /var/run/hadoop-hdfs&
mkdir /var/run/impala
13)&&&&给文件夹赋权限
chown -R e3base:e3base /var/log/impala
chown -Re3base:e3base /var/run/hadoop-hdfs/
chown -Re3base:e3base /var/run/impala
8.&&&&&&&以上的配置都是在hadoop02节点上的,现在需要依次把这些配置好的文件拷贝到hadoop03
到hadoop07节点上,在此配置时由于文件比较多,也需要用脚本来完成,其内容如下:
forf in /etc/default/impala /etc/default/bigtop-utils/etc/impala/conf/hdfs-site.xml /etc/impala/conf/core-site.xml/etc/impala/conf/hive-site.xml /usr/share/java/mysql-connector-java.jar /etc/init.d/impala-state-store/etc/init.d/impala-server
/etc/init.d/impala-catalog /var/run/hadoop-hdfs/var/log/impala /etc/default/ do scp $fhadoop03:$f;done
此脚本运行在hadoop02节点之上,用于把hadoop02之上我们配置好的impala相关文件拷贝到hadoop03节点之上。
剩下的操作就是依次更改脚本中的hadoop03,hadoop04,hadoop05,hadoop06,hadoop07就行了。
9.&&&&&&&依次更改hadoop03~hadoop07上的impala依赖库,在此操作中,首先要删除每一个节点impala依赖库目录里的所有文件,然后再把hadoop02节点里的已经配置好的依赖库拷贝过去,具体操作如下所示:
l&&在hadoop03~haoop07之上依次执行删除依赖库操作
rm –rf /usr/lib/impala/lib/*
l&&在hadoop02节点上把impala依赖库里的文件依次拷入hadoop03~hadoop07之中
scp /usr/lib/impala/lib/* hadoop03:/usr/lib/impala/lib/
scp /usr/lib/impala/lib/* hadoop04:/usr/lib/impala/lib/
scp /usr/lib/impala/lib/* hadoop05:/usr/lib/impala/lib/
scp /usr/lib/impala/lib/* hadoop06:/usr/lib/impala/lib/
scp /usr/lib/impala/lib/* hadoop07:/usr/lib/impala/lib/
10.&&&& 启动impala
1)&&&&&&&&在启动impala之前首先要确保已经启动了hive&&
nohup hive&--service metastore &
nohup hive&--service hiveserver2 &
2)&&&&&&&&在hadoop02上启动statestore,catalog
/etc/init.d/impala-state-storestart
/etc/init.d/impala-catalogstart
3)&&&&&&&&在hadoop03~hadoop07上依次启动server
/etc/init.d/impala-server start
11.&&停止impala
1)&&&&&&&&在hadoop03~hadoop07上依次停止server
/etc/init.d/impala-server stop
2)&&&&&&&&在hadoop02上停止statestore,catalog
/etc/init.d/impala-catalog stop
/etc/init.d/impala-state-store stop
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:16114次
排名:千里之外
原创:13篇
(1)(1)(4)(8)安装和使用impala出现的问题及解决方法
1、没有成功安装impala-server
impala-state-store &impala-catalog:
& & 修改错误的/etc/yum.repos.d
2、找不到JDO什么FactoryManager类:修改jar包路径
3 、-connector--5.1.30-bin.jar
放进/var/lib/impala/中
4、修改hive-site.xml中MySQL连接信息
& hive.metastore.warehouse.dir
& /user/hive/warehouse
& location of default database for the
hive.metastore.local&
javax.jdo.option.ConnectionURL&
jdbc:mysql://10.61.0.106:3306/hive?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8&
javax.jdo.option.ConnectionDriverName&
& com.mysql.jdbc.Driver&
& javax.jdo.option.ConnectionUserName
& javax.jdo.option.ConnectionPassword
hive.metastore.uris
thrift://127.0.0.1:9083
service mysqld restart
4、这两个服务要先启动:
& hive --service metastore
& &hive --service hiveserver
然后再启动hive
在impala-shell中运行show
databases后报错:
Running on
machine: node1
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line]
E:24.897881 &6858 catalog.cc:77]
java.lang.IllegalStateException: MetaException(message:Could not
connect to meta store using any of the URIs provided. Most recent
failure: org.apache.thrift.transport.TTransportException:
java.net.ConnectException: Connection refused
org.apache.thrift.transport.TSocket.open(TSocket.
& at org.apache..hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.(HiveMetaStoreClient.
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.(HiveMetaStoreClient.
com.cloudera.impala.catalog.MetaStoreClientPool$MetaStoreClient.(MetaStoreClientPool.
com.cloudera.impala.catalog.MetaStoreClientPool$MetaStoreClient.(MetaStoreClientPool.
com.cloudera.impala.catalog.MetaStoreClientPool.addClients(MetaStoreClientPool.
com.cloudera.impala.catalog.Catalog.(Catalog.
com.cloudera.impala.catalog.CatalogServiceCatalog.(CatalogServiceCatalog.
com.cloudera.impala.service.JniCatalog.(JniCatalog.
Caused by: java.net.ConnectException: Connection refused
& at java.net.PlainSocketImpl.socketConnect(Native
org.apache.thrift.transport.TSocket.open(TSocket.
& ... 9 more
解决方法:
在各个节点上运行:
& hive --service metastore
& &hive --service hiveserver
service impala-server restart
service impala-state-store restart
service impala-catalog restart
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。君,已阅读到文档的结尾了呢~~
【hadoop】impala安装过程安装,过程,教程,安装过程,安装步骤
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
【hadoop】impala安装过程
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口Alex 的 Hadoop 菜鸟教程: 第15课 Impala 安装使用教程
原文地址:&http://blog.csdn.net/nsrainbow/article/details/ &最新课程请关注原作者博客,获得更好的显示体验
本文基于Centos 6.x + CDH 5.x&
& & Impala的使用是有硬件要求的!我第一次见到有硬件要求的,那就是你的CPU必须支持SSSE3,如果你的CPU较老,不支持SSSE3 (3个S),那么你只能找别的机器来学习Impala,因为虚拟机也没有办法给你虚拟出不同的CPU。
为什么用 Impala
因为Hive 太慢了!Impala 也可以执行SQL,但是比Hive的速度快很多。为什么Impala可以比Hive快呢?因为Hive采用的是把你的sql转化成hadoop 的 MapReduce任务的代码,然后编译,打包成jar包,并分发到各个server上执行,这是一个相当慢的过程。而Impala根本就不用Hadoop的MapReduce机制,直接调用HDFS的API获取文件,在自己的内存中进行计算。
但是Impala也并不是完全比Hive好。Impala的容错机制没有Hive好,而且没有Hive那么成熟。所以一般使用以下方法来决定使用哪个
如果是ETL任务使用Hive如果是实时的热查询则用Impala
安装Impala
安装Impala的前提是安装了Hive,因为Impala直接使用Hive的metastore服务内存储的映射表来查询。这边不会重复的讲如何安装Hive的metastore,因为之前的课程中已经讲过,见&
官方建议为了获得最佳的性能,请在所有的datanode上安装Impalad,也就是下面的 impala + impala-server 。在某台机器上同时装上 impala-state-store + impala-catalog
因为我只有两台机器 host1 和 host2,所以我在host1上执行
$ sudo yum install impala
# Binaries for daemons
$ sudo yum install impala-server
# Service start/stop script
$ sudo yum install impala-state-store # Service start/stop script
$ sudo yum install impala-catalog
# Service start/stop script
在host2上执行
$ sudo yum install impala
# Binaries for daemons
$ sudo yum install impala-server
# Service start/stop script
安装impala的时候会检查很多包依赖,请根据提示安装包,比如&
--& Finished Dependency Resolution
Error: Package: hadoop-libhdfs-2.5.0+cdh5.2.1+578-1.cdh5.2.1.p0.14.el6.x86_64 (cloudera-cdh5)
Requires: hadoop-hdfs = 2.5.0+cdh5.2.1+578-1.cdh5.2.1.p0.14.el6
Installed: hadoop-hdfs-2.5.0+cdh5.3.0+781-1.cdh5.3.0.p0.54.el6.x86_64 (@cloudera-cdh5)
hadoop-hdfs = 2.5.0+cdh5.3.0+781-1.cdh5.3.0.p0.54.el6
Available: hadoop-hdfs-2.5.0+cdh5.2.1+578-1.cdh5.2.1.p0.14.el6.x86_64 (cloudera-cdh5)
hadoop-hdfs = 2.5.0+cdh5.2.1+578-1.cdh5.2.1.p0.14.el6
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
这种情况下,先检查你的CDH repository ,很多情况下,并不是你没安装这个包,而是版本不对,所以建议使用 本地repo库,这样这可以保证其他组件跟hadoop之间的依赖统一,排查的步骤
检查 /etc/yum.repo.d/cloudera-cdh5.repo 是否存在如果存在是否 enabled =1如果enabled=1,检查url是否可以访问如果以上都ok,那就是版本不对了,比如上面的错误是说我的 hadoop-hdfs 装的是CDH5.3 的库,而现在我本地的CDH repo是5.2 ,这一定是我以前安装hadoop-hdfs的时候没有用本地库造成的问题,现在只能重做本地库为 cdh5.3,或者暂时使用远程库,我使用了远程库
把hive-site.xml, core-site.xml, hdfs-site.xml, hbase-site.xml (如果有的话)&这三个文件都拷贝到&/etc/impala/conf 下
打开 &短路读取&
所谓的短路读取,就是允许impala把一些信息存储在本地磁盘上,可以加快计算的速度。
修改 拷贝来的 /etc/impala/conf/hdfs-site.xml 增加或者修改以下项
&property&
&name&dfs.client.read.shortcircuit&/name&
&value&true&/value&
&/property&
&property&
&name&dfs.domain.socket.path&/name&
&value&/var/run/hdfs-sockets/dn._PORT&/value&
&/property&
&property&
&name&dfs.client.file-block-storage-locations.timeout.millis&/name&
&value&10000&/value&
&/property&
注意:那个&_PORT 就是那样写的,不需要指定具体的数字。
在两台机器上都建立需要的文件夹
[root@host1 run]# mkdir /var/run/hdfs-sockets/
[root@host1 run]# chown -R hdfs.hdfs /var/run/hdfs-sockets/
把 impala 加到 hadoop 和 hdfs 组里面
usermod -a -G hadoop impala
usermod -a -G hdfs impala
打开&块位置跟踪& (必须打开否则不能启动)
块位置跟踪让impala知道块文件的具体位置在哪,这个配置不打开impala就启动不起来
继续修改&hdfs-site.xml 文件但是跟前面不同的是,这回 不仅要修改 impala拷贝来的那份 hdfs-site.xml 还要修改 datanode 用的 hdfs-site.xml。
所以修改 /etc/hadoop/conf/hdfs-site.xml 和 /etc/impala/conf/hdfs-site.xml 修改或者增加以下配置
&property&
&name&dfs.datanode.hdfs-blocks-metadata.enabled&/name&
&value&true&/value&
&/property&
修改后重启datanode
打开JDBC支持
Impalad启动后会打开&21050 端口的监听,java程序可以用这个端口操作JDBC。
启动impala服务
分别启动impala的各个服务
$ sudo service impala-state-store start
$ sudo service impala-catalog start
$ sudo service impala-server start
Impala如果启动不起来可以去 /var/log/impala/ 目录下看启动日志Impala的日志可以在&http://&hostname&:25000/logs 上查看到Cloudera官方还很友善的提供了,比如查询太慢,Join失败等
启动不起来的常见错误:
如果无法启动,并查看了/var/log/impala 下的日志并看到这样一句话
E:24.51 cpu-info.cc:135] CPU does not support the Supplemental SSE3 (SSSE3) instruction set, which is required. Exiting if Supplemental SSE3 is not functional...
那么你跟我一样,运行虚拟机的机器的CPU较老,还不支持SSSE3,但是运行Impala有一个硬指标,就是必须要SSSE3以上的CPU才行,这个真是没撤,虚拟机也模拟不出一个不一样的CPU,只能找别的机器来学习了
都启动好后,可以打开浏览器输入 http://host1:25000 会看到以下界面
说明安装成功了
在客户机上安装 client shell
sudo yum install impala-shell
配置Impala
编辑 /etc/default/impala 把&IMPALA_STATE_STORE_HOST 配置项换成 state-store服务启动的那台机器,把IMPALA_CATALOG_SERVICE_HOST配置成 catalog-service 服务启动的那台机器,在我这个例子中都是host1
IMPALA_CATALOG_SERVICE_HOST=&span style=&font-family: Arial, Helvetica, sans-&&host1
&/span&IMPALA_STATE_STORE_HOST=host1
IMPALA_STATE_STORE_PORT=24000
IMPALA_BACKEND_PORT=22000
IMPALA_LOG_DIR=/var/log/impala
IMPALA_CATALOG_SERVICE_HOST=host1
export IMPALA_STATE_STORE_ARGS=${IMPALA_STATE_STORE_ARGS:- \
-log_dir=${IMPALA_LOG_DIR} -state_store_port=${IMPALA_STATE_STORE_PORT}}
IMPALA_SERVER_ARGS=& \
-log_dir=${IMPALA_LOG_DIR} \
-catalog_service_host=${IMPALA_CATALOG_SERVICE_HOST} \
-state_store_port=${IMPALA_STATE_STORE_PORT} \
-use_statestore \
-state_store_host=${IMPALA_STATE_STORE_HOST} \
-be_port=${IMPALA_BACKEND_PORT}&
export ENABLE_CORE_DUMPS=${ENABLE_COREDUMPS:-false}
如果打开DUMPS
export ENABLE_CORE_DUMPS=${ENABLE_COREDUMPS:-true}可以生成DUMPS文件
Impala还可以利用YARN来控制对机器资源(CPU,内存,I/O等)的占用。但是需要用到 Llama。Llama这个项目被设计出来的目的就是连接YARN和Impala的,我们会在后面的课程讲解Llama
改完之后重启所有Impala打头的服务
Impala-shell的使用
使用impala-shell可以进入impall的shell命令行。下面通过一个例子来说明Impala怎么使用
建立测试文件夹
hdfs dfs -mkdir -p /user/cloudera/sample_data/tab1 /user/cloudera/sample_data/tab2在本地建立文本tab1.csv
1,true,123.123, 08:55:00
2,false,2-10-25 13:40:00
3,false,08-08-22 09:33:21.123
4,false,, 22:32:21.33454
5,true,243.325, 09:11:33tab2.csv
2,false,1243.5
5,true,243.325
60,false,5
70,true,243.325
90,true,243.325
把csv文件上传到hdfs
$ hdfs dfs -put tab1.csv /user/cloudera/sample_data/tab1
$ hdfs dfs -ls /user/cloudera/sample_data/tab1
Found 1 items
-rw-r--r--
1 cloudera cloudera
20:08 /user/cloudera/sample_data/tab1/tab1.csv
$ hdfs dfs -put tab2.csv /user/cloudera/sample_data/tab2
$ hdfs dfs -ls /user/cloudera/sample_data/tab2
Found 1 items
-rw-r--r--
1 cloudera cloudera
20:09 /user/cloudera/sample_data/tab2/tab2.csv
进入impala-shell,并建立3个表
DROP TABLE IF EXISTS tab1;
-- The EXTERNAL clause means the data is located outside the central location
-- for Impala data files and is preserved when the associated Impala table is dropped.
-- We expect the data to already exist in the directory specified by the LOCATION clause.
CREATE EXTERNAL TABLE tab1
col_1 BOOLEAN,
col_2 DOUBLE,
col_3 TIMESTAMP
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/user/cloudera/sample_data/tab1';
DROP TABLE IF EXISTS tab2;
-- TAB2 is an external table, similar to TAB1.
CREATE EXTERNAL TABLE tab2
col_1 BOOLEAN,
col_2 DOUBLE
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/user/cloudera/sample_data/tab2';
DROP TABLE IF EXISTS
CREATE TABLE student
name STRING
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
前两个表是基于之前上传的文件的外部表第三个表建立了一个空表,存储位置就是 hive 的&hive.metastore.warehouse.dir,依旧是用LOAD DATA方法加载数据因为Impala是对hive的优化,所以impala的数据是直接存在hive上的,确保impala有对&hive.metastore.warehouse.dir 的写权限,如果没有就把impala加到hive这个组里面
然后你就可以用 select语句测试下查询结果了
[xmseapp03:21000] & select * from tab1;
Query: select * from tab1
+----+-------+------------+-------------------------------+
| id | col_1 | col_2
+----+-------+------------+-------------------------------+
| false | 1243.5
09:33:21. |
22:32:21. |
+----+-------+------------+-------------------------------+
Fetched 5 row(s) in 6.91s
Impala还可以调用写好的.sql文件
建立一个文本 customer.dat
1|AAAAAAAABAAAAAAA|5|8|2452208|Mr.|Javier|Lewis|Y|9|12|1936|CHILE||Javie
r.Lewis@VFAxlnZEvOx.org|2452508|
2|AAAAAAAACAAAAAAA|1|8|2452288|Dr.|Amy|Moses|Y|9|4|1966|TOGO||Amy.Moses@
3|AAAAAAAADAAAAAAA|7|0|2449100|Miss|Latisha|Hamilton|N|18|9|1979|NIUE||
Latisha.|2452313|
4|AAAAAAAAEAAAAAAA|6|0|2450000|Dr.|Michael|White|N|7|6|1983|MEXICO||Mic
hael.White@i.org|2452361|
5|AAAAAAAAFAAAAAAA|0|8|2449408|Sir|Robert|Moran|N|8|5|1956|FIJI||Robert.
Moran@Hh.edu|2452469|然后上传到hdfs上
hdfs dfs -put costomer.dat /user/hive/tpcds/customer/
然后我们写一段sql 名叫&customer_setup.sql
-- store_sales fact table and surrounding dimension tables only
create external table customer
c_customer_sk
c_customer_id
c_current_cdemo_sk
c_current_hdemo_sk
c_current_addr_sk
c_first_shipto_date_sk
c_first_sales_date_sk
c_salutation
c_first_name
c_last_name
c_preferred_cust_flag
c_birth_day
c_birth_month
c_birth_year
c_birth_country
c_email_address
c_last_review_date
row format delimited fields terminated by '|'
location '/user/hive/tpcds/customer.dat';
然后这样子去执行
impala-shell -i localhost -f customer_setup.sql
hive能做的事情impala都可以做,我就说说hive做不到但是Impala可以做到的事情
单条插入外部分区表的数据
hive不支持 insert into ...values...这样的单条插入,具体原因未可知,但是Impala支持! Impala甚至可以向外部分区表插入数据!
建立hdfs的测试数据
$ hdfs dfs -mkdir -p /user/impala/data/logs/year=2015/month=01/day=01/host=host1
$ hdfs dfs -mkdir -p /user/impala/data/logs/year=2015/month=02/day=22/host=host2并上传文本文件a.txt
4,johnhdfs dfs -put /root/a.txt /user/impala/data/logs/year=2015/month=01/day=01/host=host1
hdfs dfs -put /root/b.txt /user/impala/data/logs/year=2015/month=02/day=22/host=host2
创建外部分区表
create external table logs (id int, name string)
partitioned by (year string, month string, day string, host string)
row format delimited fields terminated by ','
location '/user/impala/data/logs';
手动添加这两个分区
alter table logs add partition (year=&2015&,month=&01&,day=&01&,host=&host1&);
alter table logs add partition (year=&2015&,month=&02&,day=&22&,host=&host2&);
查询一下表
select * from logs
插入一条数据&
insert into logs partition (year=&2015&, month=&01&, day=&01&, host=&host1&) values (6,&ted&);再查一下
Impala的Java调用
选择JDBC驱动
接下来你需要选择JDBC驱动,这部分因为情况复杂,我就直接翻译官方文档的原文了:
对于Impala 2.0 以及以后的版本, 你需要在 Hive0.13 JDBC驱动 和 Cloudera JDBC 驱动之间选择。如果你在项目中已经用了早期版本的Impala的JDBC, 你需要升级你的JDBC到上面提到的两个驱动中的一个, 因为之前你只能用Hive 0.12 驱动,但是这个驱动是不兼容 Imala2.0 及以上版本的。你可以用linux的包管理器(在Centos上就是yum)来安装 Hive JDBC 驱动(包名叫 &hive-jdbc)。你也可以从上下载Cloudera JDBC 2.5驱动两种驱动都可以提供稳定的速度提升(也就是说想用哪种看心情!说了跟没说一样)
从我自己的角度,我一般选择能从Maven上直接依赖的那种,所以我选择 Hive0.14的JDBC驱动包
&dependency&
&groupId&org.apache.hive&/groupId&
&artifactId&hive-jdbc&/artifactId&
&version&0.14.0&/version&
&/dependency&
&dependency&
&groupId&org.apache.hadoop&/groupId&
&artifactId&hadoop-common&/artifactId&
&version&2.2.0&/version&
&/dependency&
另外,github上还有一个Impala的Maven模板项目,大家可以借鉴一下&
上次讲Hive的教程 && 建立的项目可以直接继续用
只需要把&HiveJdbcClient 这个类复制一份叫 ImpalaJdbcClient,然后修改里面的jdbc地址从&
Connection con = DriverManager.getConnection(&jdbc:hive2://host1:10000/default&, &hive&, &&);改成&
Connection con = DriverManager.getConnection(&jdbc:hive2://host1:21050/;auth=noSasl, &&, &&);为了简化例子,我把ImpalaJdbcClient简化成只有查询部分了
package org.crazycake.play_
import java.sql.C
import java.sql.DriverM
import java.sql.ResultS
import java.sql.SQLE
import java.sql.S
public class ImpalaJdbcClient {
* 注意:hive-server2 引用的driver是 org.apache.hive.* 而 hive-server 是
* org.apache.hadoop.hive.*
private static String driverName = &org.apache.hive.jdbc.HiveDriver&;
* @param args
* @throws SQLException
public static void main(String[] args) throws SQLException {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.exit(1);
// Impala的默认端口是 21050
Connection con = DriverManager.getConnection(&jdbc:hive2://xmseapp03:21050/;auth=noSasl&, &&, &&);
Statement stmt = con.createStatement();
// select * query
String sql = &select * from logs&;
System.out.println(&Running: & + sql);
ResultSet res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(String.valueOf(res.getInt(1)) + &\t& + res.getString(2));
运行一下,效果是
Running: select * from logs
本文已收录于以下专栏:
相关文章推荐
鄙人最近准备离职,所以把之前工作中积累的一些东西整理下发上来,其中一部分发在公司内刊上,一部分是组内交流文档,标“原创”的都是本人原创,转载请注明谢谢!
    Impala这个东西在我们实...
Impala是由Cloudera开发的高性能实时计算工具,相比Hive性能提升了几十、甚至近百倍,基本思想是将计算分发到每个 Datanode所在的节点,依靠内存实现数据的缓存进行快速计算,类似的系统...
AI时代,机器学习该如何入门?
对于机器学习,很多人的观点是:机器学习技术是今后所有技术人员都绕不过的一个门槛。 那么,普通程序员该学习机器学作为一名对机器学习心有向往的程序员,我该以什么样的姿势开始呢?
Hive 提供了一个让大家可以使用sql去查询数据的途径。让大家可以在hadoop上写sql语句。但是最好不要拿Hive进行实时的查询。因为Hive的实现原理是把sql语句转化为多个Map Reduc...
上个月参与了公司的大数据接口平台项目,其中就使用到了impala提供实时查询接口。而且,在使用当中还遇到了关于impala版本的问题,主要是sql语法上的差异,目前已经到了2.4了,而我们公司集群环境...
问题背景:
初步了解Impala的应用
重点测试Impala的查询速度是否真的如传说中的比Hive快3~30倍
写作目的:
了解Impala的安装过程
初步了解Impal...
Impala 教程
Set Up Some Basic .csv Tables
Impala 表指向已存的数据文件
查看 Impala 表结构
查询 Impala 表
数据加载与查询的例子
...
一、给表分区这个都知道,默认一个表的数据都是放在一个目录下的,对表分区,能够创建一些子目录,查询的时候,指定相应的条件能够实现只去相应的分区下查找数据,。
那么,什么情况下应该对表分区呢?
2、Impala源码分析
参考链接:http://www.sizeofvoid.net/wp-content/uploads/ImpalaIntroduction2.pdf
本章开始进入源码分析阶段,...
本教程介绍Impala的安装,使用和JDBC调用。为什么用 Impala? 因为Hive 太慢了!Impala 也可以执行SQL,但是比Hive的速度快很多。为什么Impala可以比Hive快呢?因为...
他的最新文章
讲师:宋宝华
讲师:任铄
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 impala 安装部署 的文章

 

随机推荐