centos下配置hadoop,spark

 

    因爲是在windows7上配置hadoop,所以須要使用虛擬機,這裏我用的是vmware虛擬機,以後在虛擬機上安裝centos,並安裝jdk,怎麼安裝就很少說了。今天主要是講hadoop的配置。java

    1.安裝SSH

    因爲hadoop使用SSH進行通訊,所以先要在centos系統上安裝ssh,經過命令yum install openssh-server 就能夠安裝了。而後須要設置免密碼登錄,經過ssh-keygen -t rsa -P "" 生成公鑰與私鑰。此時會有生成.ssh文件夾,並在其下會有id_rsa和id_rsa.pub這兩個文件。而後將id_rsa.pub追加到.ssh/authorized_keys下。authorized_keys用於保存全部容許以當前身份登錄到ssh客戶端的公鑰內容。以後ssh localhost(第一次還會讓你輸入yes)看看是否能免密碼登錄。node

    2.安裝hadoop單機模式

    從http://mirrors.cnnic.cn/apache/hadoop/common/stable/ 上下載最新版本的hadoop並解壓。web

    以後修改hadoop目錄下,etc目錄下的hadoop-env.sh,加入JAVA安裝信息,也就是加入export JAVA_HOME=java路徑。保存並用source命令讓配置生效。這樣Hadoop的單機模式就配置完畢了。爲了方便調用命令能夠把hadoop下的bin和sbin目錄加入PATH。apache

    而後能夠運行下自帶的wordcount程序,首先建立input目錄,並將etc下的文件都複製過去。用命令hadoop jar hadoop-mapreduce-examples-2.7.2.jar wordcount input ouputwindows

    3.僞分佈式模式

    首先配置core-site.xml,主要是配置hdfs地址和端口號,在configuration節點下加入:centos

<property>
  <name>fs.default.name</name>
  <value>hdfs://localhost:9000</value>
</property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>你的tmp文件夾路徑</value>
</property>

    而後配置hdfs-site.xml文件,主要是配置replication,在configuration節點下加入:bash

<property>
  <name>dfs.replication</name>
  <value>1</value>
</property>
<property>
  <name>dfs.name.dir</name>
  <value>你的name文件夾路徑</value>
</property>
<property>
  <name>dfs.data.dir</name>
  <value>你的data文件夾路徑</value>
</property>

    而後用命令hdfs namenode -format進行namenode格式化,結束後用start-dfs.sh啓動hadoop,用jps查看守衛進程,應該有namenode,datanode和secondarynamenode。服務器

    能夠經過 http://localhost:50070/ Web 界面來查看 NameNode 和 Datanode 信息,還可在線查看 HDFS 中的文件。在「Utilities」菜單下「Browse the file system」中可看到在hdfs上創建的目錄「/user/hadoop」等app

    單機模式下運行「grep/WordCount」等例子讀取的是本地數據,而僞分佈式讀取的則是 HDFS 上的數據。爲了使用 HDFS,須要在 HDFS 中建立用戶目錄,增刪改查文件和目錄,具體命令以下:框架

  • hdfs dfs -mkdir input    //新建input目錄,在/user/${USERNAME}目錄下
  • hdfs dfs -put ./etc/hadoop/*.xml input   //將Ubuntu的ext4目錄下的xml文件拷貝到hdsf的input目錄下
  • hdfs dfs -ls input     //複製完成後,查看文件列表

    (注:僞分佈式模式運行的MapReduce 做業的方式跟單機模式相同,但區別在於僞分佈式讀取的是HDFS中的文件,而不是本地的output和input目錄;能夠將單機模式步驟中建立的本地 input 文件夾,輸出結果 output 文件夾都刪掉來驗證這一點

    而後運行wordcount。   

    啓動 Hadoop 後,沒有原來的JobTracker 和 TaskTracker,由於新版Hadoop使用了新的MapReduce V2框架,稱爲 YARN(Yet Another Resource Negotiator)。YARN 從MapReduce 中分離出來,負責資源管理與任務調度。

    經過 start-dfs.sh 啓動Hadoop後,僅是啓動了供MapReduce使用的HDFS環境,爲了啓動 YARN來負責資源管理與任務調度。須要修改配置文件 mapred-site.xml:

<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>

    再修改配置文件 yarn-site.xml:

<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>

    start-yarn.sh 啓動yarn(需先啓動HDFS/MR)

    mr-jobhistory-daemon.sh start historyserver  啓動歷史服務器,才能在Web中查看任務運行狀況

    經過 jps命令查看到(NodeManager,ResourceManager,NameNode,DataNode)進程都啓動了

    啓動 YARN 以後,運行實例的方法仍是同樣,不過內存不夠可能會致使失敗。但資源管理方式和任務調度不一樣.啓動 YARN的好處是經過Web界面http://localhost:8088/cluster能夠查看任務運行狀況。

    4.分佈式集羣模式

    首先再建立2個虛擬機,並按上述進行配置,hostname分別是Master,Node1,Node2。

    分別在3臺機子上配置hosts,並用ping命令確保能夠相互ping通。

    接下來須要配置SSH無密碼登錄。咱們將2個子節點的id_rsa.pub傳給master,而後在master上將它們追加到authorized_keys。最後把master的authorized_keys付諸到2個子節點下。而後用ssh驗證它們能夠相互免密碼登錄。

    接下來修改配置文件,core-site.xml以下:

<property>
  <name>fs.default.name</name>
  <value>hdfs://Master:9000</value>
</property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>你的tmp文件夾路徑</value>
</property>

    hdfs-site.xml:

<property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>Master:50090</value>
</property>
<property>
  <name>dfs.replication</name>
  <value>2</value>
</property>
<property>
  <name>dfs.name.dir</name>
  <value>你的name文件夾路徑</value>
</property>
<property>
  <name>dfs.data.dir</name>
  <value>你的data文件夾路徑</value>
</property>

    slaves:

Node1
Node2

    mapred-site.xml:

<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>
<property>
  <name>mapreduce.jobhistory.address</name>
  <value>Master:10020</value>
</property>
<property>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>Master:19888</value>
</property>

    yarn-site.xml

<property>
  <name>yarn.resourcemanager.hostname</name>
  <value>Master</value>
</property>
<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>

    全部機器配置好後,還須要將tmp,data和name下的文件都刪除,以避免錯誤。

    而後hdfs namenode -format格式化,最後啓動。

    經過命令jps能夠查看各個節點所啓動的進程。正確的話,在Master節點上能夠看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 進程。在Slave節點能夠看到 DataNode 和 NodeManager 進程。缺乏任一進程都表示出錯。

    而後就是將文件上傳,並用wordcount測試。若是卡在mapreduce一直不動,多是內存緣由,能夠加大內存或者改變yarn配置。

    總之,Hadoop基本配置就是上面這些啦!

    5.SPARK配置

    Spark的配置須要在hadoop配置完成的基礎之上進行,而且須要scala。

    解壓spark和scala以及將SPARK_HOME,SCALA_HOME和它們bin加入.bashrc就很少說了,下面講一下Spark的配置,進入spark解壓目錄下的conf目錄,將spark-env.sh.template拷貝成spark-env.sh,並加入如下配置信息:

export JAVA_HOME=你的java目錄
export SCALA_HOME=你的scala目錄
export SPARK_MASTER_IP=MasterIP
export HADOOP_CONF_DIR=你的hadoop配置文件的目錄

    還須要在slaves文件下加入節點信息,加入Node1和Node2

    而後經過sbin下的start-all.sh啓動便可。注意hadoop的bin下start-all.sh,所以不要執行錯文件了。

    而後用jps應該在主節點看到Master,在子節點看到Worker了。

    這樣Spark就配置完畢了。

相關文章
相關標籤/搜索