Impala 安裝筆記1一Cloudera CDH4.3.0安裝

轉載:http://www.cnblogs.com/chengyeliang/p/3548484.html

Impala是Cloudera在受到Google的Dremel啓發下開發的實時交互SQL大數據查詢工具,Impala沒有再使用緩慢的Hive+MapReduce批處理,而是通過使用與商用並行關係數據庫中類似的分佈式查詢引擎,可以直接從HDFS或HBase中用SELECT、JOIN和統計函數查詢數據,從而大大降低了延遲。

  Impala依賴CDH,依賴hive,hive依賴mysql做元數據存儲數據庫,所以需要在安裝impala之前要檢查環境,先安裝他的Cloudera Impala Requirements。

安裝環境:

OS:Red Hat Enterprise Linux Server release 6.3 (Santiago)

內存:4G

CPU:要支持SSE3擴展指令集(impala要求)

Cloudera CDH4.3.0安裝

  我部署的是hadoop-2.0.0-cdh4.3.0.tar.gz,下載地址爲http://archive.cloudera.com/cdh4/cdh/4/hadoop-2.0.0-cdh4.3.0.tar.gz

(在http://archive.cloudera.com/cdh4/cdh/4/下還可以下載到CDH hadoop生態圈內相關的包)。再準備一個jdk1.6+的java環境,設置好JAVA_HOME。

需要注意的是,window下直接點擊鏈接下載到的包可能無法解壓成功,原因是包是放在linux ftp上的,直接下載會有問題。建議在linux機器上用wget命令下載就可以了。

  基礎配置

  給集羣配好 SSH;在hosts裏可以準備好自己機器的名字。

  以下配置文件裏就用該名稱代替。單機就配置 localhost

  配置文件

  tar包的部署方式只要具備CDH4的包就可以了,其餘步驟不需聯網,只要配置好幾個配置文件即可。我提供一份自己的配置,可以完全拷貝下來使用。進入到目錄hadoop-2.0.0-cdh4.3.0/etc/hadoop下面,修改這幾個文件:

  core-site.xml

複製代碼
 1 <configuration>
 2   <property>
 3     <name>fs.defaultFS</name>
 4     <value>hdfs://localhost:9000</value>
 5   </property>
 6   <property>
 7     <name>fs.trash.interval</name>
 8     <value>10080</value>
 9   </property>
10   <property>
11     <name>fs.trash.checkpoint.interval</name>
12     <value>10080</value>
13   </property>
14 </configuration>
複製代碼

  hdfs-site.xml(後半部分是impala需要的配置

複製代碼
 1 <configuration>
 2   <property>
 3     <name>dfs.replication</name>
 4     <value>1</value>
 5   </property>
 6   <property>
 7     <name>hadoop.tmp.dir</name>
 8     <value>/home/godp/hadoop-2.0.0-cdh4.3.0/tmp</value>
 9   </property>
10   <property>
11     <name>dfs.namenode.http-address</name>
12     <value>localhost:50070</value>
13   </property>
14   <property>
15     <name>dfs.namenode.secondary.http-address</name>
16     <value>localhost:50090</value>
17   </property>
18   <property>
19     <name>dfs.webhdfs.enabled</name>
20     <value>true</value>
21   </property>
22 <property>
23 <name>dfs.block.local-path-access.user</name>
24 <value>impala</value>
25 </property>
26 
27 <property>
28     <name>dfs.client.read.shortcircuit</name>
29         <value>true</value>
30         </property>
31 
32 <property>
33     <name>dfs.domain.socket.path</name>
34         <value>/var/run/hadoop-hdfs/dn._PORT</value>
35         </property>
36 <property>
37     <name>dfs.client.file-block-storage-locations.timeout</name>
38     <value>3000</value>
39 </property>
40 </configuration>
複製代碼

  yarn-site.xml

複製代碼
 1 <?xml version="1.0"?>
 2 <configuration>
 3 <!-- Site specific YARN configuration properties -->
 4   <property>
 5     <name>yarn.resourcemanager.resource-tracker.address</name>
 6     <value>localhost:8031</value>
 7   </property>
 8   <property>
 9     <name>yarn.resourcemanager.address</name>
10     <value>localhost:8032</value>
11   </property>
12   <property>
13     <name>yarn.resourcemanager.scheduler.address</name>
14     <value>localhost:8030</value>
15   </property>
16   <property>
17     <name>yarn.resourcemanager.admin.address</name>
18     <value>localhost:8033</value>
19   </property>
20   <property>
21     <name>yarn.resourcemanager.webapp.address</name>
22     <value>localhost:8088</value>
23   </property>
24 <property>
25     <description>Classpath for typical applications.</description>
26     <name>yarn.application.classpath</name>
27     <value>$HADOOP_CONF_DIR,$HADOOP_COMMON_HOME/share/hadoop/common/*,
28     $HADOOP_COMMON_HOME/share/hadoop/common/lib/*,
29     $HADOOP_HDFS_HOME/share/hadoop/hdfs/*,$HADOOP_HDFS_HOME/share/hadoop/hdfs/lib/*,
30     $YARN_HOME/share/hadoop/yarn/*,$YARN_HOME/share/hadoop/yarn/lib/*,
31     $YARN_HOME/share/hadoop/mapreduce/*,$YARN_HOME/share/hadoop/mapreduce/lib/*
32     </value>
33   </property>
34   <property>
35     <name>yarn.nodemanager.aux-services</name>
36     <value>mapreduce.shuffle</value>
37   </property>
38   <property>
39     <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
40     <value>org.apache.hadoop.mapred.ShuffleHandler</value>
41   </property>
42   <property>
43     <name>yarn.nodemanager.local-dirs</name>
44     <value>/home/godp/hadoop-2.0.0-cdh4.3.0/yarn/local</value>
45   </property>
46 <property>
47     <name>yarn.nodemanager.log-dirs</name>
48     <value>/home/godp/hadoop-2.0.0-cdh4.3.0/yarn/logs</value>
49   </property>
50   <property>
51     <description>Where to aggregate logs</description>
52     <name>yarn.nodemanager.remote-app-log-dir</name>
53     <value>/home/godp/hadoop-2.0.0-cdh4.3.0/yarn/logs</value>
54   </property>
55   <property>
56     <name>yarn.app.mapreduce.am.staging-dir</name>
57     <value>/home/godp/hadoop-2.0.0-cdh4.3.0</value>
58 </property>
59 </configuration>
複製代碼

  mapred-site.xml

複製代碼
 1 <?xml version="1.0"?>
 2 <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 3 
 4 <!-- Put site-specific property overrides in this file. -->
 5 
 6 <configuration>
 7  <property>
 8    <name>mapreduce.framework.name</name>
 9    <value>yarn</value>
10   </property>
11   <property>
12     <name>mapreduce.jobhistory.address</name>
13     <value>localhost:10020</value>
14   </property>
15   <property>
16     <name>mapreduce.jobhistory.webapp.address</name>
17     <value>localhost:19888</value>
18   </property>
19 
20 
21 </configuration>
複製代碼

  最後在/etc/profile中添加環境變量,添加如下配置:

複製代碼
export JAVA_HOME=/usr/lib/jvm/jdk7
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=./:$JAVA_HOME/lib:$JRE_HOME/lib:$JRE_HOME/lib/tools.jar
export HADOOP_HOME=/home/godp/hadoop-2.0.0-cdh4.3.0
export HADOOP_MAPRED_HOME=${HADOOP_HOME}
export HADOOP_COMMON_HOME=${HADOOP_HOME}
export HADOOP_HDFS_HOME=${HADOOP_HOME}
export YARN_HOME=${HADOOP_HOME}
export HADOOP_YARN_HOME=${HADOOP_HOME}
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HDFS_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/sbin
export HIVE_HOME=/home/godp/hive-0.9.0-cdh4.1.0
export PATH=$PATH:$HADOOP_HOME/bin:$HIVE_HOME/bin
複製代碼

  source之使之生效。如果是分佈式環境,然後把這臺機器上的hadoop配置 scp到其他各臺機器上。

  啓動集羣
  HADOOP_HOME/bin下,第一次格式化namenode

  hadoop namenode -format

然後在namenode機器上逐個啓動

start-dfs.sh

start-yarn.sh

可以使用jps命令在各臺機器上查看已經起來的進程和端口,在 namenode:8088/cluster 可以看集羣情況。 datanode:8042/node 可以看到節點情況。

啓動dfs的時候無論成功或者失敗,命令行都會顯示輸出的日誌路徑,如果需要查看詳細信息或者某個datanode啓動失敗的時候,就去相應的路徑下查看datanode對應的log,那裏會有詳細的出錯信息,可以排錯。我就是這麼解決錯誤的。

問題排查

  • 如果某幾個節點沒有起來,很可能是因爲端口占用的問題,比如yarn啓動的時候

會使用8080端口,如果被佔用,該datanode就起不了了,可以使用

netstat -anp | grep 8080

找到id,然後kill -9 xxx 掉。

8080是默認的tomcat 的端口,所以裝有tomcat類似應用web服務器的節點在此端口的佔用上需要二者選其一,另一個需要改端口。

  • 另一個頭疼一整天的問題,配置檢查不出什麼錯誤,但是一直是起不來hdfs,去

日誌裏邊找,提示錯誤:

  attempt_1389859916143_0002_m_000001_0, Status : FAILED

  Container launch failed for container_1389859916143_0002_01_000003 : java.lang.IllegalArgumentException: Does not contain a valid host:port authority: XX-XX-0.95:39561

  找不到有效的host:port在XXX:XXXX上,本能的以爲是配置錯了,端口問題,或者主機的配置問題。

  出錯原因及解決辦法:

  Hadoop的主機名不能既有“-”又有“.”,二者不能都在,否則無法解析主機名。

  修改掉主機名,重啓ok。

  至此,如果沒有問題了,可以上傳hdfs文件,看hdfs是否成功可用。

  測試是否成功

  測試mapreduce任務是否可以被順利執行,可以採用hadoop自帶的example的jar包中的例子,這裏有個小技巧:不需要每次測試新的環境都要上傳新的wordcount的單詞文件,我們只需要跑一個不需要輸入文件的計算圓周率PI的例子程序就ok。

  這樣默認採用10個隨機點,10個map採用蒙特卡羅算法估算pi,一般可以估算到3.20左右,這個過程就可以驗證你的集羣環境是否配置成功了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章