Ambari學習筆記:以本地倉庫自動搭建hadoop叢集環境
測試平臺:Ubuntu_server_16.04_x64
準備好一臺虛擬機器,安裝vmtool以設定共享資料夾:
sudo mkdir /mnt/cdrom
mount -tro iso9660 /dev/cdrom /mnt/cdrom
sudo tar -vxzf /mnt/cdrom/VMwareTools
cd vmware-tools-distrib
./vmware-install.pl
rm -rf ../vmware-tools-distrib
ln -s /mnt/hgfs/shared_dir /home/daya/shared_dir(此句在重啟後執行)
建立好root賬戶:
sudo passwd root
Requirements
首先看下abmari的一些前置需求與相容性,看是否滿足:
滿足
瀏覽器需要安裝Ubuntu桌面,必要時再進行安裝。
安裝openssl:
sudo apt-get install openssh-server -y
安裝Python2.7:
sudo apt-get install python2.7 -y
安裝JDK:
cp /home/daya/shared_dir/jdk-8u144-linux-x64.tar.gz /usr/
tar -zxvf jdk-8u144-linux-x64.tar.gz
nano /etc/environment
修改並更新環境變數。
Environment
配置無密登入與root登入:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
nano /etc/ssh/sshd_config
"PermitRootLogin yes"
安裝NTP服務同步時鐘:
apt-get install ntp
update-rc.d ntp defaults
複製虛擬機器,並修改各機的/etc/hosts與/etc/hostname檔案:
127.0.0.1 localhost
127.0.1.1 s3
192.168.200.105 s1
192.168.200.106 s2
192.168.200.107 s3
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
配置本地倉庫
搭建web伺服器
使用tomcat搭建web伺服器,詳見此文。之前搭建過tomcat的Ubuntu虛擬機器磁碟不足了,選擇在windows宿主機上使用tomcat搭建web伺服器。windows上安裝tomcat非常簡單,直接解壓然後設定CATALINA_HOME與JAVA_HOME即可。
下載本地tarball包
將三個tarball包解壓到tomcat的.\webapps\ROOT目錄下,修改.\webapps\ROOT\ambari\ubuntu16\ambari.list與.\webapps\ROOT\HDP\ubuntu16\hdp.list,將url的hostname改為web伺服器的ip地址:
http://192.168.1.103:8080/ambari/ubuntu16/
http://192.168.1.103:8080/HDP/ubuntu16/
http://192.168.1.103:8080/HDP-UTILS-1.1.0.21/repos/ubuntu16
啟動web伺服器:
c:\DevProgram\apache-tomcat-9.0.0.M26\bin\startup.bat
將修改的ambari.list複製到需要安裝Ambari Server/Agent主機的/etc/apt/sources.list.d/目錄下:
cp /home/daya/shared_dir/ambari.list /etc/apt/sources.list.d/
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B9733A7A07513CAD
sudo apt-get update
Ambari Server/Agent安裝與配置
Ambari Server(s1)
apt-get install ambari-server(SSD速度飛快)
ambari-server setup
ambari-server start
Ambari Agent(s2,s3)
這步手動安裝實屬無奈,用web自動安裝agent會報錯,不知道怎麼解決。
apt-get install ambari-agent
nano /etc/ambari-agent/conf/ambari-agent.ini
修改”hostname=s1”,啟動:
ambari-agent start
自動配置hadoop叢集
注意自定義JAVA_HOME:/usr/jdk1.8.0_144。
由於三臺伺服器未安裝圖形桌面,在windows宿主機中用瀏覽器進入Ambari管理頁面進行hadoop叢集安裝:http://192.168.200.105:8080。
在HDP頁面選擇使用本地倉庫,移除不需要的系統支援,修改Base URL:
輸入主機名:
因為在windows瀏覽器中無法訪問Ubuntu中的檔案,我們手動將私鑰資訊複製到對話方塊:
cat /root/.ssh/id_rsa
選擇的元件與分配如下:
下一步正確輸出所有配置資訊後等待完成即可,速度挺慢的,很吃硬碟跟CPU:
錯誤資訊
記憶體不足
等了好久結果啟動出錯,提示資訊為記憶體不足,擴大虛擬機器記憶體解決。
hosts錯誤
將虛擬機器記憶體擴大後又出現錯誤,具體描述為:除了HDFS之外的服務均無法啟動,其中Yarn的錯誤日誌為”:50070:Connection refused”。在這塊卡了好久,使用JPS命令看到namenode是啟動的,埠50070也是處於監聽狀態,但是50070頁面除了本機之外的另兩臺主機均無法訪問。在網上搜索無果後,注意到一個細節,在使用netstat -l
檢視監聽埠時發現:
50070埠被繫結到了127.0.1.1上去了!
將hosts檔案中的127.0.1.1一行註釋掉,解決!
HIVE2錯誤
s2報錯:”returned 1. SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/hdp/2.6.1.0-129/hive2/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/hdp/2.6.1.0-129/hadoop/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]”
jar包重複,刪除掉其中一個:
mv log4j-slf4j-impl-2.6.2.jar log4j-slf4j-impl-2.6.2.jar.bak
s2再次報錯:”com.mysql.jdbc.exceptions.jdbc4.CommunicationsException : Communications link failure”,修改/etc/hive2/conf/下的hive-site.xml,並使web頁面的配置與其保持一致:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
spark錯誤
“‘curl -sS -L -w ‘%{http_code}’ -X PUT –data-binary @/tmp/spark2/spark2-hdp-yarn-archive.tar.gz -H ‘Content-Type: application/octet-stream’ ‘http://s1:50070/webhdfs/v1/hdp/apps/2.6.1.0-129/spark2/spark2-hdp-yarn-archive.tar.gz?op=CREATE&user.name=hdfs&overwrite=True&permission=444’ 1>/tmp/tmpT4cIBk 2>/tmp/tmpEdq0e7’ returned 2. curl: option –data-binary: out of memory”
參考網站,暫未解決。
削減服務的叢集
削減部分服務已驗證ambari搭建hadoop叢集的可行性: