impala 安装

impala安装

1.       部署方案

节点类型

Ip

机器名称

部署软件

管理节点

192.168.156.2

Hadoop01

Zookeeper

journalnode

Namenode(主) Resourcemanager(备)

 

192.168.156.3

Hadoop02

 

 

Zookeeper

Journalnode

Namenode(备) Resourcemanager(主)

Hive

Impala-state-store

impala-catalog

数据节点

192.168.156.4

Hadoop03

Datanode

Nodemanager

Impala-server

Zookeeper

Journalnode

192.168.156.5

Hadoop04

Datanode

Nodemanager

Impala-server

192.168.156.6

Hadoop05

Datanode

Nodemanager

Impala-server

192.168.156.7

Hadoop06

Datanode

Nodemanager

Impala-server

192.168.156.8

Hadoop07

Datanode

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源码和安装包

http://archive.cloudera.com/cdh5/cdh/5/下载impala5.3.1有源码和安装包,

这里让下载源码是因为有可能在安装的过程中会缺少某些依赖包,我们就可以直接到源码里去找到对应版本的依赖包。

需要下载的impala包有:

impala-2.1.1+cdh5.3.1+0-1.cdh5.3.1.p0.17.el6.x86_64.rpm

impala-state-store-2.1.1+cdh5.3.1+0-1.cdh5.3.1.p0.17.el6.x86_64.rpm

impala-catalog-2.1.1+cdh5.3.1+0-1.cdh5.3.1.p0.17.el6.x86_64.rpm

impala-udf-devel-2.1.1+cdh5.3.1+0-1.cdh5.3.1.p0.17.el6.x86_64.rpm

impala-server-2.1.1+cdh5.3.1+0-1.cdh5.3.1.p0.17.el6.x86_64.rpm

impala-shell-2.1.1+cdh5.3.1+0-1.cdh5.3.1.p0.17.el6.x86_64.rpm

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 impala-2.1.1+cdh5.3.1+0-1.cdh5.3.1.p0.17.el6.x86_64.rpm –nodeps

2)  rpm -ivh impala-state-store-2.1.1+cdh5.3.1+0-1.cdh5.3.1.p0.17.el6.x86_64.rpm

3)   rpm -ivh impala-catalog-2.1.1+cdh5.3.1+0-1.cdh5.3.1.p0.17.el6.x86_64.rpm

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 impala-2.1.1+cdh5.3.1+0-1.cdh5.3.1.p0.17.el6.x86_64.rpm -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/hadoop; do scp $fhadoop03:$f;done

此脚本运行在hadoop02节点之上,用于把hadoop02之上我们配置好的impala相关文件拷贝到hadoop03节点之上。

剩下的操作就是依次更改脚本中的hadoop03hadoop04,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

 

 

 

 

 

 

 

   

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值