Impala安裝完整版
一、Impala簡介
Cloudera Impala對你存儲在Apache Hadoop在HDFS,HBase的資料提供直接查詢互動的SQL。除了像Hive使用相同的統一存儲平台,Impala也使用相同的中繼資料,SQL文法(Hive SQL),ODBC驅動程式和使用者界面(Hue Beeswax)。Impala還提供了一個熟悉的面向批量或實時查詢和統一平台。
二、安裝要求
1、軟體要求
l Red Hat Enterprise Linux (RHEL)/CentOS 6.2 (64-bit)
l CDH 4.1.0 or later
l Hive
l MySQL
注意:Impala不支援在Debian/Ubuntu, SuSE, RHEL/CentOS 5.7系統中安裝。
2、硬體要求
在Join查詢過程中需要将資料集加載記憶體中進行計算,是以對安裝Impalad的記憶體要求較高。
三、安裝準備
1、作業系統版本檢視
>more/etc/issue
CentOSrelease 6.2 (Final)
Kernel \ron an \m
2、機器準備
10.28.169.112mr5
10.28.169.113mr6
10.28.169.114mr7
10.28.169.115mr8
各機器安裝角色
mr5:NameNode、ResourceManager、SecondaryNameNode、Hive、impala-state-store
mr6、mr7、mr8:DataNode、NodeManager、impalad
3、使用者準備
在各個機器上建立使用者hadoop,并打通ssh
4、軟體準備
到cloudera官網下載下傳:
Hadoop:
hadoop-2.0.0-cdh4.1.2.tar.gz
hive:
hive-0.9.0-cdh4.1.2.tar.gz
impala:
impala-0.3-1.p0.366.el6.x86_64.rpm
impala-debuginfo-0.3-1.p0.366.el6.x86_64.rpm
impala-server-0.3-1.p0.366.el6.x86_64.rpm
impala-shell-0.3-1.p0.366.el6.x86_64.rpm
impala依賴包下載下傳:
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/
四、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_30
exportJAVA_BIN=${JAVA_HOME}/bin
exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_OPTS="-Djava.library.path=/usr/local/lib-server -Xms1024m -Xmx2048m -XX:MaxPermSize=256m -Djava.awt.headless=true-Dsun.net.client.defaultReadTimeout=600
00-Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300-Dsun.net.inetaddr.ttl=300"
exportHADOOP_HOME=/home/hadoop/hadoop-2.0.0-cdh4.1.2
exportHADOOP_PREFIX=$HADOOP_HOME
exportHADOOP_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}/sbin
exportJAVA_HOME JAVA_BIN PATH CLASSPATH JAVA_OPTS
exportHADOOP_LIB=${HADOOP_HOME}/lib
exportHADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
3、修改配置檔案
在機器mr5上hadoop使用者登入修改hadoop的配置檔案(配置檔案目錄:hadoop-2.0.0-cdh4.1.2/etc/hadoop)
(1)、slaves :
添加以下節點
mr6
mr7
mr8
(2)、hadoop-env.sh :
增加以下環境變量
exportJAVA_HOME=/usr/jdk1.6.0_30
exportHADOOP_HOME=/home/hadoop/hadoop-2.0.0-cdh4.1.2
exportHADOOP_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}/sbin
exportJAVA_HOME JAVA_BIN PATH CLASSPATH JAVA_OPTS
exportHADOOP_LIB=${HADOOP_HOME}/lib
exportHADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
(3)、core-site.xml :
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://mr5:9000</value>
<description>The name of the defaultfile system.Either the literal string "local" or a host:port forNDFS.</description>
<final>true</final>
</property>
<property>
<name>io.native.lib.available</name>
<value>true</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
<description>A base for other temporarydirectories.</description>
</property>
</configuration>
(4)、hdfs-site.xml :
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/dfsdata/name</value>
<description>Determines 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.</description>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/dfsdata/data</value>
<description>Determines 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.
</description>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.permission</name>
<value>false</value>
</property>
</configuration>
(5)、mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.job.tracker</name>
<value>hdfs://mr5:9001</value>
<final>true</final>
</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>
<property>
<name>mapreduce.cluster.temp.dir</name>
<value>file:/home/hadoop/mapreddata/system</value>
<final>true</final>
</property>
<property>
<name>mapreduce.cluster.local.dir</name>
<value>file:/home/hadoop/mapreddata/local</value>
<final>true</final>
</property>
</configuration>
(6)、yarn-env.sh :
增加以下環境變量
exportJAVA_HOME=/usr/jdk1.6.0_30
exportHADOOP_HOME=/home/hadoop/hadoop-2.0.0-cdh4.1.2
exportHADOOP_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}/sbin
exportJAVA_HOME JAVA_BIN PATH CLASSPATH JAVA_OPTS
exportHADOOP_LIB=${HADOOP_HOME}/lib
exportHADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
(7)、yarn-site.xml:
<configuration>
<!--Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.address</name>
<value>mr5:8080</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>mr5:8081</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>mr5:8082</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>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>file:/home/hadoop/nmdata/local</value>
<description>thelocal directories used by the nodemanager</description>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>file:/home/hadoop/nmdata/log</value>
<description>thedirectories used by Nodemanagers as log directories</description>
</property>
</configuration>
4、拷貝到其他節點
(1)、在mr5上配置完第2步和第3步後,壓縮hadoop-2.0.0-cdh4.1.2
rm hadoop-2.0.0-cdh4.1.2.tar.gz
tar zcvf hadoop-2.0.0-cdh4.1.2.tar.gz hadoop-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 [email protected]:/home/hadoop/
scp/home/hadoop/hadoop-2.0.0-cdh4.1.2.tar.gz [email protected]:/home/hadoop/
scp/home/hadoop/hadoop-2.0.0-cdh4.1.2.tar.gz [email protected]:/home/hadoop/
(2)、将mr5機器上hadoop使用者的配置環境的檔案.bash_profile遠端拷貝到mr6、mr7、mr8機器上
scp/home/hadoop/.bash_profile [email protected]:/home/hadoop/
scp/home/hadoop/.bash_profile [email protected]:/home/hadoop/
scp/home/hadoop/.bash_profile [email protected]:/home/hadoop/
拷貝完成後,在mr5、mr6、mr7、mr8機器的/home/hadoop/目錄下執行
source.bash_profile
使得環境變量生效
5、啟動hdfs和yarn
以上步驟都執行完成後,用hadoop使用者登入到mr5機器依次執行:
hdfsnamenode -format
start-dfs.sh
start-yarn.sh
通過jps指令檢視:
mr5成功啟動了NameNode、ResourceManager、SecondaryNameNode程序;
mr6、mr7、mr8成功啟動了DataNode、NodeManager程序。
6、驗證成功狀态
通過以下方式檢視節點的健康狀态和作業的執行情況:
浏覽器通路(本地需要配置hosts)
http://mr5:50070/dfshealth.jsp
http://mr5:8088/cluster
五、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.2
exportPATH=$PATH:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${HIVE_HOME}/bin
exportHIVE_CONF_DIR=$HIVE_HOME/conf
exportHIVE_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檔案,并添加以下配置資訊:
<configuration>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://10.28.169.61:3306/hive_impala?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hadoop</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>hive.security.authorization.enabled</name>
<value>false</value>
</property>
<property>
<name>hive.security.authorization.createtable.owner.grants</name>
<value>ALL</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>${user.home}/hive-logs/querylog</value>
</property>
</configuration>
4、驗證成功狀态
完成以上步驟之後,驗證hive安裝是否成功
在mr5指令行執行hive,并輸入”show tables;”,出現以下提示,說明hive安裝成功:
>hive
hive>show tables;
OK
Time taken:18.952 seconds
hive>
六、impala安裝
說明:
(1)、以下1、2、3、4步是在root使用者分别在mr5、mr6、mr7、mr8下執行
(2)、以下第5步是在hadoop使用者下執行
1、安裝依賴包:
安裝mysql-connector-java:
yum install mysql-connector-java
安裝bigtop
rpm -ivh bigtop-utils-0.4+300-1.cdh4.0.1.p0.1.el6.noarch.rpm
安裝libevent
rpm -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.rpm
rpm -ivh impala-server-0.3-1.p0.366.el6.x86_64.rpm
rpm -ivh impala-debuginfo-0.3-1.p0.366.el6.x86_64.rpm
rpm -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檔案中添加如下内容:
<property>
<name>dfs.client.read.shortcircuit</name>
<value>true</value>
</property>
<property>
<name>dfs.client.read.shortcircuit.skip.checksum</name>
<value>false</value>
</property>
在hadoop和impala的hdfs-site.xml檔案中添加如下内容并重新開機hadoop和impala:
<property>
<name>dfs.datanode.data.dir.perm</name>
<value>755</value>
</property>
<property>
<name>dfs.block.local-path-access.user</name>
<value>hadoop</value>
</property>
<property>
<name>dfs.datanode.hdfs-blocks-metadata.enabled</name>
<value>true</value>
</property>
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
[Not connected]> connect mr6:21000
[mr6:21000] >refresh
[mr6:21000]>connectmr7:21000
[mr7:21000]>refresh
[mr7:21000]>connectmr8:21000
[mr8:21000]>refresh
7、驗證成功狀态
使用impala-shell啟動Impala Shell,分别連接配接各Impalad主機,重新整理中繼資料,之後就可以執行shell指令。相關的指令如下(可以在任意節點執行):
>impala-shell
[Not connected]> connect mr6:21000
[mr6:21000]>refresh
[mr6:21000] >show databases
default
[mr6:21000] >
出現以上提示資訊,說明安裝成功。
也可以檢視我發表在http://yuntai.1kapp.com/?p=904相同的部落格。
更多精彩部落格請通路:http://yuntai.1kapp.com/