Ubuntu14.04或16.04下安裝JDK1.8+Scala+Hadoop2.7.3+Spark2.0.2


 

為了將Hadoop和Spark的安裝簡單化,今日寫下此帖。

 

首先,要看手頭有多少機器,要安裝偽分布式的Hadoop+Spark還是完全分布式的,這里分別記錄。

1. 偽分布式安裝

偽分布式的Hadoop是將NameNode,SecondaryNameNode,DataNode等都放在一台機器上執行,Spark同理,一般用於開發環境。

1.1 准備工作

系統准備:一台Ubuntu16.04機器,最好能夠聯網

准備好四個安裝包:jdk-8u111-linux-x64.tar.gz,scala-2.12.0.tgz,hadoop-2.7.3.tar.gz,spark-2.0.2-bin-hadoop2.7.tgz

1.2 配置SSH免密碼登錄

SSH是集群不同機器間實現自由數據傳輸通信的根本保障。安裝完成后試試ssh到本機是否需要密碼即可。

sudo apt-get install ssh openssh-server
# 安裝SSH

ssh-keygen -t rsa -P ""
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 配置秘鑰

service ssh start
# 啟動SSH服務

 

1.3 解壓四個軟件包並配置環境變量

解壓四個軟件包:

tar -zxvf jdk-8u111-linux-x64.tar.gz
sudo mv jdk1.8.0_111 /usr/lib/
# 解壓JDK並移動到/usr/lib/下

tar -zxvf scala-2.12.0.tgz
sudo mv scala-2.12.0 /usr/lib/
# 解壓scala並移動到/usr/lib/下

tar -zxvf hadoop-2.7.3.tar.gz
# 解壓hadoop包

tar -zxvf spark-2.0.2-bin-hadoop2.7.tgz
# 解壓spark包

 

配置環境變量:

當前用戶的環境變量位於~/.profile,root用戶的環境變量位於/etc/profile。這里我們將環境變量按當前用戶配置。vim ~/.profile

vim ~/.profile
# 打開環境變量

# 添加下面的變量
export JAVA_HOME=/usr/lib/jdk1.8.0_111
export SCALA_HOME=/usr/lib/scala-2.12.0
export HADOOP_HOME=/home/user/hadoop-2.7.3
export SPARK_HOME=/home/user/spark-2.0.2-bin-hadoop2.7
export PATH=$PATH:$JAVA_HOME/bin:$SCALA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 保存后使其立即生效
source ~/.profile

  

 

1.4 配置Hadoop

需要配置三個文件:core-site.xml,mapred-site.xml,hdfs-site.xml。

在core-site.xml中添加如下信息:

vim hadoop-2.7.3/etc/hadoop/core-site.xml
# 打開文件

<configuration>
    <property>
       <name>hadoop.tmp.dir</name>
       <value>file:/home/user/hadoop/tmp</value>
       <description>Abase for other temporary directories.</description>
    </property>
    <property>
       <name>fs.defaultFS</name>
       <value>hdfs://localhost:9000</value>
    </property>
</configuration>

  

 在mapred-site.xml中添加如下信息:

cp hadoop-2.7.3/etc/hadoop/mapred-site.xml.template hadoop-2.7.3/etc/hadoop/mapred-site.xml
# 復制一份

vim hadoop-2.7.3/etc/hadoop/mapred-site.xml
# 打開文件

<configuration>
   <property>
      <name>mapred.job.tracker</name>
      <value>localhost:9001</value>
   </property>
</configuration>

  

 在hdfs-site.xml中添加如下信息,其中replication是機器數量,此處為1,user為當前用戶名:

vim hadoop-2.7.3/etc/hadoop/hdfs-site.xml
# 打開文件

<configuration>
   <property>
      <name>dfs.replication</name>
      <value>1</value>
   </property>
   <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:/home/user/hadoop/tmp/dfs/name</value>
   </property>
   <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:/home/user/hadoop/tmp/dfs/data</value>
   </property>
</configuration>

 

如果在啟動Hadoop時找不到環境變量,可以在hadoop-2.7.3/etc/hadoop/hadoop-env.sh中明確:export JAVA_HOME=/usr/lib/jdk1.8.0_111

 

1.5 配置Spark

Spark只需要配置spark-env.sh文件。

vim /home/user/spark-2.0.2-bin-hadoop2.7/conf/spark-env.sh
# 打開文件

export JAVA_HOME=/usr/lib/jdk1.8.0_111
export SCALA_HOME=/usr/lib/scala-2.12.0
export SPARK_MASTER_HOST=localhost #單機下配置為localhost
export HADOOP_CONF_DIR=/home/user/hadoop-2.7.3/etc/hadoop/ #hadoop配置目錄
export SPARK_WORKER_MEMORY=8g #給spark分配8G內存
export SPARK_WORKER_CORES=16 #允許spark以16核並行運算
# 配置項很多,請參考文件中的提示

  

1.6 啟動Hadoop和Spark

先格式化hadoop的HDFS(分布式文件系統),這是必要的步驟,否則NameNode無法啟動。但也不需要每次啟動Hadoop時都格式化,否則會造成Data和Name不兼容,使得DataNode無法啟動,若出現這種情況,刪掉tmp/data/current/下的VERSION文件。重新格式化HDFS即可。

啟動Hadoop和Spark命令為:

$HADOOP_HOME/bin/hdfs namenode -format
# 格式化HDFS
$HADOOP_HOME/sbin/start-all.sh # 啟動Hadoop
$SPARK_HOME/sbin/start-all.sh # 啟動Spark

 

啟動后,輸jps命令,若Hadoop的DataNode,NameNode,SecondaryNameNode,***Manager都啟動,Spark的Master和Worker都啟動,則集群成功啟動,缺一不可。

此時,訪問http://localhost:50070可訪問Hadoop集群Web任務查看頁面,訪問http://localhost:8080可訪問Spark集群Web任務查看頁面。

注意:如果裝的是雙系統,ubuntu訪問ntfs盤符可以使用這條命令激活:ntfsfix /dev/sda5

 

2. 完全分布式安裝

顧名思義,完全分布式安裝是真正的集群部署,一般用於生產環境。

 

2.1 准備工作

系統准備:一台Ubuntu16.04機器作為master(ip:192.168.1.1),最好能夠聯網;1台及其以上Ubuntu16.04機器作為slave節點(ip:192.168.1.2 ...)

准備好四個安裝包:jdk-8u111-linux-x64.tar.gz,scala-2.12.0.tgz,hadoop-2.7.3.tar.gz,spark-2.0.2-bin-hadoop2.7.tgz

 

2.2 配置SSH免密碼登錄

SSH是集群不同機器間實現自由數據傳輸通信的根本保障。安裝完成后試試ssh到本機是否需要密碼即可。

此處步驟與1.2中相同,但是要將master上的RSA秘鑰拷貝到其他機器,實現機器間自由訪問。

scp ~/.ssh/id_rsa.pub user@slave01:/home/user/
# 遠程拷貝RSA秘鑰

ssh slave01;
# 登錄slave01
mkdir ~/.ssh;cat ~/id_rsa.pub >> ~/.ssh/authorized_keys;exit;
# 將秘鑰生成公鑰並退出
ssh slave11;
# 重新連接看是否需要密碼,自動登錄則成功

 

依次類推,對所有的slave節點做相同操作,最后實現master到任意slave節點的SSH無密碼登錄。

此外,我們還需要對每台機器上的hosts文件做配置,以實現SSH到hostname即可訪問機器,無需顯式IP地址。

sudo vim /etc/hosts
# 打開hosts

# 存入下面的IP與hostname映射
192.168.1.1       master
192.168.1.2       slave01
192.168.1.3       slave02
192.168.1.4       slave03
...

依次類推,對所有的slave節點做相同操作。

 

2.3 解壓四個軟件包並配置環境變量

在master主節點機器上解壓四個軟件包和配置環境變量,與1.3相同,不同的是,還需要通過scp命令將配置好的jdk和scala整體拷貝到其他從節點。

 

2.4 配置Hadoop

需要配置三個文件:core-site.xml,mapred-site.xml,hdfs-site.xml,slaves。

前三個與1.4都相同,只需將localhost改成master(主節點的hostname名),replication改成具體的機器個數。

最后,還需要通過scp命令將配置好的hadoop整體拷貝到其他從節點。

 

2.5 配置Spark

Spark只需要配置spark-env.sh文件,這一步與1.5相同。最后,通過scp命令將配置好的spark整體拷貝到其他從節點。

 

2.6 啟動Hadoop和Spark

在主節點上啟動hadoop和spark,通過jps驗證是否成功啟動集群。

 

到此,您就可以在單機上用Eclipse或Intellij做開發,在集群上運行整個集群任務咯!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM