Impala整合hive(填了各種坑之後總結出來的文件)
1.3 Impala安裝包下載(不能使用yum命令的情況下)
1.4 Impala安裝包下載(可以使用yum命令的情況下)
3.1 安裝 bigtop-utils (主、從機都要安裝)
3.5 主機安裝impala-server (主、從機都要安裝)
3.7 安裝impala-udf-devel(主、從機都要安裝)
4.1 配置 vim /etc/default/bigtop-utils裡的JDK
6.1 拷貝core-site.xml、hdfs-site.xml和hdfs-site.xml (主、從機都要配置)
1 環境準備
1.1 伺服器配置
ID |
IP address |
Host name |
Notes |
---|---|---|---|
1 |
128.64.108.160 |
esp01 |
1.Hadoop Master 6.Hive |
2 |
128.64.108.178 |
esp02 |
1.Hadoop Slave 6.Hive |
3 |
128.64.108.196 |
esp03 |
1.Hadoop Slave 6.Hive |
1.2 環境配置
安裝impala前,要確保在以上規劃的三臺機子上已經安裝好:
JDK 1.8 |
Hadoop 2.9.0叢集 |
Spark 2.3.1叢集 |
Scala 2.12 |
Zookeeper 3.4.12 |
Hive叢集 |
1.3 Impala安裝包下載(不能使用yum命令的情況下)
A.下載impala安裝包,下載地址:
http://archive.cloudera.com/beta/impala-kudu/redhat/7/x86_64/impala-kudu/0/RPMS/x86_64
B.下載bigtop-utils,下載地址:
http://archive.cloudera.com/cdh5/redhat/7/x86_64/cdh/5.9.0/RPMS/noarch/
1.4 Impala安裝包下載(可以使用yum命令的情況下)
安裝impala各元件的命令: $ sudo yum -y install cyrus-sasl-plain lsb ntp $ sudo yum install impala-shell |
【注:可以使用yum的情況在可以直接忽略下面的第2、3步】
2 下載安裝依賴包(必須安裝)
yum -y install cyrus-sasl-plain lsb ntp |
【注:若不能使用yum命令,可以選擇在可以聯網的機子上用yum下載好,然後使用
locate lsb命令找到依賴包,複製過去即可】
3 安裝impala
3.1 安裝 bigtop-utils (主、從機都要安裝)
rpm -ivh bigtop-utils-0.7.0+cdh5.9.0+0-1.cdh5.9.0.p0.30.el7.noarch.rpm |
3.2 安裝impala-2.7.0 (主、從機都要安裝)
rpm -ivh impala-2.7.0+cdh5.9.0+0-1.cdh5.9.0.p0.11.el7.x86_64.rpm --nodeps |
【注:要加上選項 --nodeps否則安裝會因為缺少依賴包無法通過】
3.3 安裝impala-catalog (主機安裝)
rpm -ivh impala-catalog-2.7.0+cdh5.9.0+0-1.cdh5.9.0.p0.11.el7.x86_64.rpm |
3.4 安裝 impala-state (主機安裝)
rpm -ivh impala-state-store-2.7.0+cdh5.9.0+0-1.cdh5.9.0.p0.11.el7.x86_64.rpm |
3.5 主機安裝impala-server (主、從機都要安裝)
rpm -ivh impala-server-2.7.0+cdh5.9.0+0-1.cdh5.9.0.p0.11.el7.x86_64.rpm |
3.6 安裝impala-shell(主、從機都要安裝)
rpm -ivh impala-shell-2.7.0+cdh5.9.0+0-1.cdh5.9.0.p0.11.el7.x86_64.rpm |
3.7 安裝impala-udf-devel(主、從機都要安裝)
rpm -ivh impala-udf-devel-2.7.0+cdh5.9.0+0-1.cdh5.9.0.p0.11.el7.x86_64.rpm |
4 配置Impala (主、從機都要配置)
4.1 配置 vim /etc/default/bigtop-utils裡的JDK
# export JAVA_HOME export JAVA_HOME=/usr/java/jdk1.8.0_77 |
4.2 配置vim /etc/default/impala (主、從機都要配置一樣)
#修改其中的兩項即可,因為規劃esp01為master,所以下面配置為esp01 IMPALA_CATALOG_SERVICE_HOST=esp01 IMPALA_STATE_STORE_HOST=esp01 |
【注:一定要保證hosts裡已經配置過esp01,否則需要使用128.64.108.160】
5 配置三臺機器時間同步(主、從機都要配置)
[[email protected] espai]# systemctl restart ntpd |
6 修改相應的配置檔案
6.1 拷貝core-site.xml、hdfs-site.xml和hdfs-site.xml (主、從機都要配置)
把hadoop配置檔案core-site.xml和hdfs-site.xml,以及hive配置檔案hive-site.xml拷貝到/etc/impala/conf.dist/目錄下。
6.2 具體配置
在Impala節點上對剛才拷貝的core-site.xml、hdfs-site.xml配置檔案,在原有基礎上追加如下修改:
# hdfs-site.xml <!--impala configuration -->
<property> <name>dfs.datanode.hdfs-blocks-metadata.enabled</name> <value>true</value> </property> <property> <name>dfs.block.local-path-access.user</name> <value>impala</value> </property> <property> <name>dfs.client.file-block-storage-locations.timeout.millis</name> <value>60000</value> </property>
|
# core-site.xml <!--impala configuration -->
<property> <name>dfs.client.read.shortcircuit</name> <value>true</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> |
6.3 重啟Hadoop叢集
必須要重啟hadoop叢集!!!
7 設定scoket path
在目錄/var/run/目錄下新建目錄hadoop-hdfs (主、從機都要配置)。
【注意:該資料夾可能已經存在,應當確認用impala是否有許可權進行讀寫。 如果已經存在,將使用者impala加入該檔案所屬的組,並修改該檔案組的許可權即: chown -R 775 hadoop-hdfs/】
[[email protected] .ssh]# cd /var/run/ #進入目錄/var/run/ [[email protected] run]# mkdir hadoop-hdfs #建立目錄hadoop-hdfs [[email protected] run]# chown -R 775 hadoop-hdfs/ #設定許可權 |
8 許可權配置(所有機器都應當配置)
- 如果想要impala和yarn合作,需要把 impala 使用者加入 hdfs 組.
- impala 在執行 drop table 操作時,需要把檔案移到到 hdfs 的回收站,所以需要建立一個hdfs的目錄 /user/impala,並將其設定為impala 使用者可寫。
- 同樣的,impala 需要讀取 hive 資料倉庫下的資料,故需要把 impala 使用者加入 hive 組。
#主機:esp01 [[email protected] esp01]# usermod -G hdfs,hadoop impala [[email protected] esp01]# groups impala impala : impala hdfs hadoop
#從機:esp02 [[email protected] esp02]# usermod -G hdfs,hadoop impala [[email protected] esp02]# groups impala impala : impala hdfs hadoop
#從機:esp03 [[email protected] esp03]# usermod -G hdfs,hadoop impala [[email protected] esp03]# groups impala impala : impala hdfs hadoop
|
另:建立impala在hdfs上的目錄並設定許可權
[[email protected] ~]$ hadoop fs -mkdir -p /user/impala [[email protected] ~]$ hadoop fs -chown impala /user/impala |
9 啟動impala
#主機esp01 [[email protected] ~]# service impala-state-store restart [[email protected] ~]# service impala-catalog restart [[email protected] ~]# service impala-server restart
#從機:esp02 [[email protected] ~]# service impala-server restart
#從機:esp03 [[email protected] ~]# service impala-server restart
|
10 登入impala-shell
[esp01@linux108160 impala]$ impala-shell Starting Impala Shell without Kerberos authentication Connected to esp01:21000 Server version: impalad version 2.7.0-cdh5-IMPALA_KUDU-cdh5 RELEASE (build 48f1ad385382cd90dbaed53b174965251d91d088) ******************************************************************************* Welcome to the Impala shell. Copyright (c) 2015 Cloudera, Inc. All rights reserved. (Impala Shell v2.7.0-cdh5-IMPALA-cdh5 (48f1ad3) built on Thu Aug 18 12:15:44 PDT 2016)
Run the PROFILE command after a query has finished to see a comprehensive summary of all the performance and diagnostic information that Impala gathered for that query. Be warned, it can be very long! ******************************************************************************* [esp01:21000] > |
11 同步hive元資料
命令如下:
[esp01:21000] > invalidate metadata; #同步hive元資料 [esp01:21000] > show databases; #檢視同步之後的資料庫 |
12 在impala-shell端建立表
[esp01:21000] > create table if not exists testdata ( id Int, name String ); [esp01:21000] >select * from testdata; |