Spark安装配置指南
張佩云教授讓我們做的學校服務器搭建Spark集群,網上的配置過程乍一看很容易,可我中間遇到了無數的問題...現在搭建成功了,把實際搭建過程和要點總結了一下.
創建hadoop用戶
如果你安裝 Ubuntu 的時候不是用的 “hadoop” 用戶,那么需要增加一個名為 hadoop 的用戶。
首先按 ctrl+alt+t 打開終端窗口,輸入如下命令創建新用戶 :
?
sudo useradd -m hadoop -s /bin/bash
?
接著使用如下命令設置密碼,可簡單設置為 hadoop,按提示輸入兩次密碼:
?
sudo passwd hadoop
?
可為 hadoop 用戶增加管理員權限,方便部署,避免一些對新手來說比較棘手的權限問題:
?
sudo adduser hadoop sudo
?
最后注銷當前用戶(點擊屏幕右上角的齒輪,選擇注銷),在登陸界面使用剛創建的 hadoop 用戶進行登陸。
更新apt
用 hadoop 用戶登錄后,我們先更新一下 apt,后續我們使用 apt 安裝軟件,如果沒更新可能有一些軟件安裝不了。按 ctrl+alt+t 打開終端窗口,執行如下命令:
?
sudo apt-get update
安裝SSH、配置SSH無密碼登陸
集群、單節點模式都需要用到 SSH 登陸(類似于遠程登陸,你可以登錄某臺 Linux 主機,并且在上面運行命令),Ubuntu 默認已安裝了 SSH client,此外還需要安裝 SSH server:
?
sudo apt-get install openssh-server
?
安裝后,可以使用如下命令登陸本機:
?
ssh localhost
?
此時會有如下提示(SSH首次登陸提示),輸入 yes 。然后按提示輸入密碼 hadoop,這樣就登陸到本機了。
但這樣登陸是需要每次輸入密碼的,我們需要配置成SSH無密碼登陸比較方便。
首先退出剛才的 ssh,就回到了我們原先的終端窗口,然后利用 ssh-keygen 生成密鑰,并將密鑰加入到授權中:
?
exit?????????????????????????? # 退出剛才的 ssh localhost
cd ~/.ssh/???????????????????? # 若沒有該目錄,請先執行一次ssh localhost
ssh-keygen -t rsa????????????? # 會有提示,都按回車就可以
cat ./id_rsa.pub >> ./authorized_keys? # 加入授權
?
此時再用 ssh localhost 命令,無需輸入密碼就可以直接登陸了,如下圖所示。
安裝Java環境
Java環境可選擇 Oracle 的 JDK,或是 OpenJDK,按http://wiki.apache.org/hadoop/HadoopJavaVersions中說的,新版本在 OpenJDK 1.7 下是沒問題的。為圖方便,這邊直接通過命令安裝 OpenJDK 7。
?
sudo apt-get install openjdk-7-jre openjdk-7-jdk
?
安裝好 OpenJDK 后,需要找到相應的安裝路徑,這個路徑是用于配置 JAVA_HOME 環境變量的。執行如下命令:
?
dpkg -L openjdk-7-jdk | grep '/bin/javac'
?
該命令會輸出一個路徑,除去路徑末尾的 “/bin/javac”,剩下的就是正確的路徑了。如輸出路徑為 /usr/lib/jvm/java-7-openjdk-amd64/bin/javac,則我們需要的路徑為 /usr/lib/jvm/java-7-openjdk-amd64。
接著配置 JAVA_HOME 環境變量,為方便,我們在 ~/.bashrc 中進行設置(擴展閱讀:?設置Linux環境變量的方法和區別):
?
vim ~/.bashrc
?
在文件最前面添加如下單獨一行(注意 = 號前后不能有空格),將“JDK安裝路徑”改為上述命令得到的路徑,并保存:
?
export JAVA_HOME=JDK安裝路徑
?
如下圖所示(該文件原本可能不存在,內容為空,這不影響):
(此處文本編輯器用的是nano,不是vim)
接著還需要讓該環境變量生效,執行如下代碼:
?
source ~/.bashrc
?
設置好后我們來檢驗一下是否設置正確:
?
echo $JAVA_HOME# 檢驗變量值
java -version
$JAVA_HOME/bin/java -version? # 與直接執行 java -version 一樣
?
如果設置正確的話,$JAVA_HOME/bin/java -version 會輸出 java 的版本信息,且和 java -version 的輸出結果一樣,如下圖所示:
安裝 Hadoop
可以在http://mirrors.cnnic.cn/apache/hadoop/common/下載最新版本的hadoop。一般選擇下載最新的穩定版本,即下載 “stable” 下的 hadoop-2.x.y.tar.gz 這個格式的文件,這是編譯好的,另一個包含 src 的則是 Hadoop 源代碼,需要進行編譯才可使用。
本文涉及的文件均通過瀏覽器下載,默認保存在 “Downloads” 目錄中(若不是請自行更改 tar 命令的相應目錄)。另外,本教程選擇的是 2.7.3 版本,如果你用的不是 2.7.3 版本,則將所有命令中出現的 2.7.3 更改為你所使用的版本。
我們選擇將 Hadoop 安裝至 /usr/local/ 中:
?
sudo tar -zxf ~/Downloads/hadoop-2.7.3.tar.gz -C /usr/local??? # 解壓到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.7.3/ ./hadoop??????????? # 將文件夾名改為hadoop
sudo chown -R hadoop ./hadoop?????? # 修改文件權限
?
添加Hadoop的環境變量到~/.bashrc中:
?
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
?
并執行source ~/.bashrc使其生效。
Hadoop 解壓后即可使用。輸入如下命令來檢查 Hadoop 是否可用,成功則會顯示 Hadoop 版本信息:
?
cd /usr/local/hadoop
./bin/hadoop version
?
Hadoop偽分布式配置
Hadoop 可以在單節點上以偽分布式的方式運行,Hadoop 進程以分離的 Java 進程來運行,節點既作為 NameNode 也作為 DataNode,同時,讀取的是 HDFS 中的文件。
Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,偽分布式需要修改2個配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每個配置以聲明 property 的 name 和 value 的方式來實現。
修改配置文件 core-site.xml (通過 gedit 編輯會比較方便: gedit ./etc/hadoop/core-site.xml),將當中的
<configuration>
</configuration>
?
修改為下面的:
?
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
?
同樣的,修改配置文件 hdfs-site.xml:
?
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
?
配置完成后,執行 NameNode 的格式化:
?
./bin/hdfs namenode -format
?
成功的話,會看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若為 “Exitting with status 1” 則是出錯。
?
接著開啟 NameNode 和 DataNode 守護進程。
?
./sbin/start-dfs.sh
?
若出現如下SSH提示,輸入yes即可。
啟動時可能會出現如下 WARN 提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable。該 WARN 提示可以忽略,并不會影響正常使用(該 WARN 可以通過編譯 Hadoop 源碼解決)。
啟動完成后,可以通過命令 jps 來判斷是否成功啟動,若成功啟動則會列出如下進程: “NameNode”、”DataNode” 和 “SecondaryNameNode”(如果 SecondaryNameNode 沒有啟動,請運行 sbin/stop-dfs.sh 關閉進程,然后再次嘗試啟動嘗試)。如果沒有 NameNode 或 DataNode ,那就是配置不成功,請仔細檢查之前步驟,或通過查看啟動日志排查原因。
成功啟動后,可以訪問 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,還可以在線查看 HDFS 中的文件。
啟動YARN
YARN 是從 MapReduce 中分離出來的,負責資源管理與任務調度。YARN 運行于 MapReduce 之上,提供了高可用性、高擴展性,YARN 的更多介紹在此不展開,有興趣的可查閱相關資料。
上述通過 ./sbin/start-dfs.sh 啟動 Hadoop,僅僅是啟動了 MapReduce 環境,我們可以啟動 YARN ,讓 YARN 來負責資源管理與任務調度。
首先修改配置文件 mapred-site.xml,這邊需要先進行重命名:
?
mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml
?
然后再進行編輯,同樣使用 gedit 編輯會比較方便些 gedit ./etc/hadoop/mapred-site.xml
?
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
接著修改配置文件 yarn-site.xml:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
?
然后就可以啟動 YARN 了(需要先執行過 ./sbin/start-dfs.sh):
?
./sbin/start-yarn.sh????? # 啟動YARN
./sbin/mr-jobhistory-daemon.sh start historyserver? # 開啟歷史服務器,才能在Web中查看任務運行情況
?
開啟后通過 jps 查看,可以看到多了 NodeManager 和 ResourceManager 兩個后臺進程,如下圖所示。
啟動 YARN 有個好處是可以通過 Web 界面查看任務的運行情況:http://localhost:8088/cluster,如下圖所示。
Hive的安裝
在安裝hive之前,由于HWI功能依賴ant,需要首先安裝ant。在Apache的網站下載Apache,解壓到/usr/local文件夾并添加環境變量到~/.bashrc中
?
sudo tar -zxf ~/Downloads/apache-ant-1.9.7-bin.tar.gz -C /usr/local
cd /usr/local/
sudo mv ./apache-ant-1.9.7-bin/ ./ant
sudo chown -R hadoop ./ant
vim ~/.bashrc
然后將export ANT_HOME=/usr/local/ant和export PATH=$ANT_HOME/bin:$PATH添加進文件中。
?
檢查ant是否安裝成功:
?
ant -v 或 ant -version
?
MySQL的安裝
sudo apt-get install mysql-server
?
安裝過程中會要求輸入數據庫的root密碼(非linux的root密碼),輸入兩次一樣的密碼即可,請不要忘記root的密碼。
Hive安裝
在Apache的網站上下載Hive,解壓到/usr/local
sudo tar -zxf ~/Downloads/apache-hive-2.1.0-bin.tar.gz -C /usr/local
cd /usr/local/
sudo mv ./apache-hive-2.1.0-bin/ ./hive
sudo chown -R hadoop ./hive
vim ~/.bashrc
?
然后將export HIVE_HOME=/usr/local/HIVE和export PATH=$HIVE_HOME/bin:$PATH添加進文件中。
?
然后在https://dev.mysql.com/downloads/connector/j/下載JDBC驅動包加入到hive的lib目錄下,把jdk目錄下的tools.jar文件復制到hive的lib目錄下
?
添加配置文件
?
cd /usr/local/hive/conf
cp hive-default.xml.template hive-site.xml
cp hive-env.sh.template hive-env.sh
cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties
cp hive-log4j2.properties.template hive-log4j2.properties
?
將hive-site.xml修改成如下:
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/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>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>spark</value>
<description>password to use against metastore database</description>
</property>
<property>
? <name>hive.matastore.local</name>
<value>true</value>
</property>
<property>
<name>hive.matastore.warehourse.dir</name>
<value>hdfs://localhost:8020/user/hive/warehouse</value>
</property>
<property>
? <name>hive.hwi.listen.host</name>
<value>0.0.0.0</value>
</property>
<property>
? <name>hive.hwi.listen.port</name>
<value>9999</value>
</property>
<property>
??<name>hive.hwi.war.file</name>
? <value>${env:HWI_WAR_FILE}</value>
</property>
</configuration>
在HDFS中創建目錄:
cd /usr/local/hadoop
./bin/Hadoop fs -mkdir /user
./bin/Hadoop fs -mkdir /user/hive
./bin/Hadoop fs -mkdir /user/hive/warehouse
./bin/hadoop fs -chmod g+w /tmp
./bin/hadoop fs -chmod g+w /user/hive/warehouse
?
在hive/bin目錄運行./schematool -initSchema -dbType mysql
?
Spark安裝
首先去Apache的網站下載Spark,注意選擇和你已經安裝好的Hadoop相符的Spark
然后解壓到/usr/local
sudo tar -zxf ~/下載/spark-2.0.2-bin-hadoop2.7.tgz -C /usr/local/
cd /usr/local
sudo mv ./spark-2.0.2-bin-hadoop2.7/ ./spark
sudo chown -R hadoop ./spark????????? # 此處的 hadoop 為你的用戶名
安裝后,需要在 ./conf/spark-env.sh 中修改 Spark 的 Classpath,執行如下命令拷貝一個配置文件:
cd /usr/local/spark
cp ./conf/spark-env.sh.template ./conf/spark-env.sh
?
編輯 ./conf/spark-env.sh(vim ./conf/spark-env.sh),在最后面加上如下一行:
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
保存后就可以啟動Spark了。如果需要在局域網中訪問Spark服務器需要把SPARK_MASTER_HOST配置為本機的IP。
?
如果需要和R語言連用則需要安裝R。Debian系操作系統可以直接使用apt-get install r-base r-base-dev 安裝。
null
轉載于:https://www.cnblogs.com/HannibalWangLecter/p/6911350.html
總結
以上是生活随笔為你收集整理的Spark安装配置指南的全部內容,希望文章能夠幫你解決所遇到的問題。