# Hadoop # ——偽分布式集群/環(huán)境搭建

一、在操作前啦鸣,先明白幾個(gè)概念,避免操作linux的時(shí)候混淆

概念一:命名

  • 機(jī)器名 對(duì)機(jī)器起的名字

  • 用戶名username 機(jī)器上登陸用戶的名字

  • 主機(jī)名hostname 為了方便通過(guò)網(wǎng)絡(luò)訪問(wèn)對(duì)應(yīng)機(jī)器来氧,對(duì)IP地址取的別名

  • 在后面的環(huán)境搭建過(guò)程中有三臺(tái)機(jī)器诫给,為了方便,在命名上啦扬,配置如下

    機(jī)器列表 機(jī)器名 用戶名 主機(jī)名
    機(jī)器1(對(duì)集群做一些臨時(shí)操作可能會(huì)用到) worker1 root(最高權(quán)限用戶)
    user(普通用戶)
    worker1
    機(jī)器2 worker2 root(最高權(quán)限用戶)
    user(普通用戶)
    worker2
    機(jī)器3 worker3 root(最高權(quán)限用戶)
    user(普通用戶)
    worker3

概念二:用戶

  • 一臺(tái)機(jī)器可以有很多個(gè)用戶蝙搔,但是只有一個(gè)權(quán)限最高的用戶,每個(gè)用戶都有一個(gè)用戶文件夾作為<span style="color:red">用戶根目錄(~/)</span>存放數(shù)據(jù)考传,<strong>所以不同用戶登陸時(shí)候吃型,訪問(wèn)到的<span style="color:red">用戶根目錄(~/)</span>是不同的</strong>

概念三:存儲(chǔ)

  • 一般來(lái)講不分盤,只有一個(gè)盤(當(dāng)然你也可以進(jìn)行分區(qū)僚楞,只不過(guò)沒(méi)必要)勤晚,用戶僅僅是機(jī)器的使用者,只有使用權(quán)泉褐,只有root用戶才有操作機(jī)器所有功能赐写、目錄的能力,相當(dāng)于占有權(quán)膜赃。Windows實(shí)際上也類似挺邀,只是我們平時(shí)使用的時(shí)候基本一人一個(gè)電腦,磁盤被分了很多個(gè),而且創(chuàng)建的用戶基本都只有一個(gè)而且是管理員權(quán)限端铛,所以有一種我的電腦任我操作的感覺(jué)泣矛。

概念四:需要了解的部分目錄結(jié)構(gòu)

目錄 目錄路徑 操作權(quán)限
電腦根目錄 / root權(quán)限
root用戶主目錄 /root root權(quán)限
普通用戶們所在位置目錄 /home root權(quán)限
普通用戶1主目錄 /home/普通用戶1 普通用戶1權(quán)限
  • root身份的時(shí)候:

    目錄 目錄路徑
    root用戶主目錄 /root 或 ~/
    普通用戶1主目錄 /home/普通用戶1/
  • 普通用戶1身份的時(shí)候:

    目錄 目錄路徑
    普通用戶1主目錄: ~/ 或 /home/普通用戶1/
    無(wú)權(quán)操作超過(guò)普通用戶1主目錄以上級(jí)別的目錄內(nèi)容或其他用戶主目錄內(nèi)容

二、下面開(kāi)始搭建環(huán)境

(虛擬機(jī)已裝好或者已經(jīng)擁有幾臺(tái)可以使用的centos7系統(tǒng)的機(jī)器)

2.1 網(wǎng)絡(luò)配置【在每臺(tái)機(jī)器都要操作

  1. 手動(dòng)更改ip地址(在設(shè)置里面圖形化操作)假設(shè)有三臺(tái)機(jī)器更改ip為

    機(jī)器 ip
    worker1 192.168.150.100
    worker2 192.168.150.101
    worker3 192.168.150.102
  2. 以root權(quán)限進(jìn)行各類操作

    • 進(jìn)入root用戶身份

        $ su – root//(回車后要輸入root密碼禾蚕,在安裝時(shí)候設(shè)置的root密碼)
      
    • 用文檔編輯器編輯網(wǎng)絡(luò)配置您朽,打開(kāi)文檔進(jìn)行編輯

        $ gedit /etc/sysconfig/network/
        //在里面添加上如下內(nèi)容(表示使用網(wǎng)絡(luò),主機(jī)名改為對(duì)應(yīng)機(jī)器的主機(jī)名换淆,比如在worker1上操作就改為worker1)
        NETWORKING=yes
        HOSTNAME=master
        //保存并關(guān)閉
      
    • 讓配置生效并修改hostname:

        $ hostname worker1(每臺(tái)機(jī)器分別改為對(duì)應(yīng)主機(jī)名)
      

2.2 關(guān)閉防火墻【<span style="color:red">在每臺(tái)機(jī)器都要操作</span>】

(為了方便才關(guān)閉哗总,如果是公司生產(chǎn)環(huán)境,建議將特定端口打開(kāi)而不要關(guān)閉防火墻)

  • 查看防火墻狀態(tài):

      firewall-cmd --state 
    
  • 關(guān)閉防火墻:

      systemctl stop firewalld.service #停止firewall
    
  • 禁止firewall開(kāi)機(jī)啟動(dòng):

      systemctl disable firewalld.service (禁用防火墻)
    

(所有機(jī)器都要關(guān)閉倍试、禁用)

2.3 配置host【<span style="color:red">在每臺(tái)機(jī)器都要操作</span>】

  1. 打開(kāi)host文件進(jìn)行編輯

     $ gedit /etc/hosts
    
  2. 在里面添加如下內(nèi)容:

     192.168.150.100 worker1
     192.168.150.101 worker2
     192.168.150.102 worker3
    

2.4 同步時(shí)鐘(可以忽略讯屈,為了防止機(jī)器們協(xié)同工作時(shí)的時(shí)間記錄不匹配所產(chǎn)生的錯(cuò)誤,一般安裝虛擬機(jī)的時(shí)候或者聯(lián)網(wǎng)的時(shí)候會(huì)自動(dòng)同步時(shí)間县习,所以一般不需要手動(dòng)同步了)【<span style="color:red">在每臺(tái)機(jī)器都要操作</span>】

  • 用vi編輯配置

      $crontab -e
      //進(jìn)入vi編輯模式
      //按i鍵(代表insert)進(jìn)如輸入模式
    
  • 輸入下面代碼

      0 1 * * * /usr/sbin/ntpdate cn.pool.ntp.org
    
  • 結(jié)束編輯

      //按esc鍵退出輸入模式
      //輸入 :wq(冒號(hào)wq)代表保存并退出
    
  • 然后進(jìn)行同步

      $ /usr/sbin/ntpdate cn.pool.ntp.org
    

2.5 配置免密碼登陸(user用戶登陸各臺(tái)worker機(jī)器不用輸入密碼)

(方便在后面開(kāi)啟hadoop服務(wù)的時(shí)候省的輸入多次密碼造成阻礙)

所有機(jī)器都要開(kāi)啟ssh證書登陸功能

2.5.1 查看ssh服務(wù)狀態(tài)耻煤、建立目錄

  • 檢測(cè)ssh服務(wù)狀態(tài)
    $ sudo service sshd status

  • 在所有機(jī)器上,以普通用戶身份查看根目錄下是否有 .ssh文件夾

    • 進(jìn)入普通用戶根目錄

        $ cd ~/
      
    • 列出目錄下所有文件准颓、文件夾

        $ ll -a
      
    • 如果看見(jiàn)有.ssh就ok;如果沒(méi)有則創(chuàng)建

        $ mkdir .ssh
      

2.5.2 配置ssh無(wú)密碼登錄

  1. 進(jìn)入.ssh文件夾

     $ cd ~/.ssh
    
  2. 秘鑰生成和配置

    • 方法零(推薦):

      1. 生成密鑰

         $ ssh-keygen -t rsa
         //生成秘鑰棺妓,指定使用rsa加密方式
        
        • 一路回車鍵直到生成
      2. 拷貝公鑰給需要免密登錄的各臺(tái)機(jī)器

         ssh-copy-id 用戶名@對(duì)應(yīng)的主機(jī)名或者對(duì)應(yīng)的ip地址
        
        • 比如發(fā)送到主機(jī)名為worker2的機(jī)器上:

            $ ssh-copy-id user@worker2
          
      3. 然后該確認(rèn)確認(rèn)攘已,該輸密碼輸密碼。

      4. 去worker1機(jī)器上重啟終端命令行

        • 測(cè)試:

            $ ssh worker2或者其他主機(jī)名
            //如果不需要輸入密碼怜跑,那么就成功了
          
    • 方法一:

      1. 生成免密簽名

         $ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
         //指定加密方式為dsa無(wú)密碼放在~/.ssh目錄下样勃,id_dsa為文件名
        
        • 一路回車鍵直到生成
      2. 重命名id_dsa.pub為authorized_keys

         $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
        
      3. 將authorized_keys同時(shí)發(fā)送到其他幾臺(tái)需要被免密登陸的機(jī)器的.ssh目錄中

         $ scp authorized_keys 用戶名@對(duì)應(yīng)的主機(jī)名或者對(duì)應(yīng)的ip地址:~/.ssh/authorized_keys
        
        • 比如發(fā)送到主機(jī)名為worker2的機(jī)器上:

            $ scp authorized_keys  user@worker2:~/.ssh/authorized_keys
          
      4. 然后該確認(rèn)確認(rèn),該輸密碼輸密碼性芬。

      5. 然后去被免密登陸的機(jī)器上(自己峡眶、worker2、worker3)更改權(quán)限

             //(用普通用戶身份)
             $ chmod 700 ~/.ssh
             $ chmod 600 ~/.ssh/*
        
      6. 去worker1機(jī)器上重啟終端命令行

        • 測(cè)試:

            $ ssh worker2或者其他主機(jī)名
            //如果不需要輸入密碼植锉,那么就成功了
          
    • 方法二:

      1. 生成密鑰

         $ ssh-keygen -t rsa
         //生成秘鑰辫樱,指定使用rsa加密方式
        
        • 一路回車鍵直到生成
      2. 在worker1機(jī)器上進(jìn)入.ssh目錄

         $ cd ~/.ssh
        
      3. 將id_rsa.pub文件重命名為authorized_keys同時(shí)發(fā)送到自己機(jī)器和其他幾臺(tái)需要被免密登陸的機(jī)器的.ssh目錄中

         $ scp id_rsa.pub  用戶名@對(duì)應(yīng)的主機(jī)名或者ip地址:~/.ssh/authorized_keys
        
        • 比如發(fā)送到主機(jī)名為worker2的機(jī)器上:

            $ scp id_rsa.pub  user@worker2:~/.ssh/authorized_keys
          
      4. 然后該確認(rèn)確認(rèn),該輸密碼輸密碼俊庇。

      5. 然后去被免密登陸的機(jī)器上(自己狮暑、worker2、worker3)更改權(quán)限

             //(用普通用戶身份)
             $ chmod 700 ~/.ssh
             $ chmod 600 ~/.ssh/*
        
      6. 去worker1機(jī)器上重啟終端命令行

        • 測(cè)試:

            $ ssh worker2或者其他主機(jī)名
            //如果不需要輸入密碼辉饱,那么就成功了
          
    • 以后就可以直接使用 ssh 主機(jī)名 在一臺(tái)機(jī)器上登陸另一臺(tái)機(jī)器對(duì)其他電腦操作

    • 如果不行搬男,在嘗試做以下操作

        $ gedit /etc/ssh/sshd_config
        //在最后加上以下內(nèi)容并保存
        RSAAuthentication yes
        PubkeyAuthentication yes
        //(上述內(nèi)容原本是注釋掉的,為了方便就不找出來(lái)了彭沼,直接手動(dòng)加上)
        //(所有機(jī)器都要做)
      

2.6 安裝java開(kāi)發(fā)環(huán)境【在每臺(tái)機(jī)器都要操作

  1. 下載對(duì)應(yīng)版本的jdk

  2. 安裝java(我們將java安裝在根目錄的usr目錄缔逛,所以需要root身份權(quán)限)

    • 進(jìn)入root用戶身份

        $ su – root(回車后要輸入root密碼,在安裝時(shí)候設(shè)置的root密碼)
      
    • usr下創(chuàng)建java目錄

        $ mkdir /usr/java
      
    • 將jdk安裝包移動(dòng)到j(luò)ava目錄中解壓(假設(shè)一開(kāi)始安裝包下載在了桌面上)

      • 進(jìn)入桌面目錄

          $ cd /home/master/桌面
        
      • 移動(dòng)

          $ mv 安裝包的文件名 /usr/java
        
      • 進(jìn)入java目錄

          $ cd /usr/java
        
      • 解壓

          $ tar -xvf 安裝包的文件名
        
  3. 配置環(huán)境變量(為了讓user普通用戶生效新裝的java,我們更改user用戶的環(huán)境變量配置文件)

    • 打開(kāi)環(huán)境變量的配置文件并編輯

        $ gedit /home/user/.bash_profile
      
    • 在里面添加如下內(nèi)容

        export JAVA_HOME=/usr/java/剛剛解壓的文件夾名字(即jdk安裝包的名字)/
        export PATH=$JAVA_HOME/bin:$PATH
      
    • 使得環(huán)境變量生效

        $ source /home/master/.bash_profile
      
    • 檢測(cè)是否成功

        $ java -version
      
    • 如果輸出的版本號(hào)與自己下載的相同,那就對(duì)了

2.7 Hadoop安裝與配置(由于我們把hadoop安裝在普通用戶根目錄下褐奴,所以不需要最高權(quán)限按脚,所以下面的操作為了方便全部采用圖形化操作,當(dāng)然命令行也行)【在每臺(tái)機(jī)器都要操作

  1. 將安裝包放在worker1機(jī)器的user用戶根目錄下并解壓到當(dāng)前路徑
  2. 比如解壓完以后文件夾叫hadoop-2.9.0
  3. 在worker1機(jī)器的user用戶根目錄下歉糜,新建兩個(gè)文件夾乘寒,叫hdfs、hadoopTemp
  4. 配置hadoop環(huán)境變量(為了讓系統(tǒng)能通過(guò)命令找到hadoop可執(zhí)行文件)
    • 文本編輯器打開(kāi)環(huán)境變量配置文件(此環(huán)境變量文件僅對(duì)user普通用戶起作用)

        $ gedit /home/master/.bash_profile
      
    • 添加內(nèi)容

        export HADOOP_HOME=/home/master/Hadoop-2.9.0
        export PATH=$PATH:$HADOOP_HOME/bin
      
    • Hadoop配置[去hadoop安裝(解壓)的地方(/home/master/Hadoop-2.9.0)找文件]

      1. 找:/etc/hadoop/hadoop-env.sh,添加或修改內(nèi)容:

         export JAVA_HOME=java安裝路徑
        
      2. 找/etc/hadoop/yarn.env.sh,添加或修改內(nèi)容:

         export JAVA_HOME=java安裝路徑
        
      3. 找/etc/hadoop/core-site.xml,添加內(nèi)容

         <configuration>
             <property>
                 <name>fs.default.name</name>
                 <value>hdfs://worker1:9000</value>
                 <description>配置HDFS服務(wù)地址及端口</description>
             </property>
             <property>
                 <name>hadoop.tmp.dir</name>
                 <value>/home/user/hadoopTemp</value>
                 <description>配置臨時(shí)文件存放地址</description>
             </property>
         </configuration>
        
      4. 找/etc/hadoop/hdfs-site.xml,添加內(nèi)容

         <configuration>
             <property>
                 <name>hdfs.name.dir</name>
                 <value>/home/user/hdfs/name</value>
                 <description>存放hdfs名字空間元素</description>
             </property>
             <property>
                 <name>hdfs.data.dir</name>
                 <value>/home/user/hdfs/data</value>
                 <description>存放hdfs數(shù)據(jù)物理空間</description>
             </property>
             <property>
                 <name>hdfs.replication</name>
                 <value>1</value>
                 <description>副本個(gè)數(shù),小于機(jī)器數(shù)量</description>
             </property>
         </configuration>
        
      5. 找/etc/hadoop/mapred-site.xml,添加內(nèi)容

             <configuration>
                 <property>
                     <name>mapreduce.framework.name</name>
                     <value>yarn</value>
                 </property>
             </configuration>
        
      6. 找/etc/hadoop/yarn-site.xml,添加內(nèi)容

             <configuration>
                 <property>
                     <name>yarn.nodemanager.aux-service</name>
                     <value>mapreduce_shuffle</value>
                 </property>
                 <property>
                     <name>yarn.resourcemanager.webapp.address</name>
                     <value>worker1:18088</value>
                     <description>hadoop的webapp訪問(wèn)地址</description>
                 </property>
             </configuration>
        
      7. 找/etc/hadoop/slave文件匪补,設(shè)置slave(worker1作為老大伞辛,其他worker作為小弟節(jié)點(diǎn)配置到hadoop中)

         //內(nèi)部添加
         worker1
         worker2
         worker3
         //為什么會(huì)有worker1?老大既作為老大,也和小弟一起做任務(wù)
        

      針對(duì)在每臺(tái)機(jī)器都要操作的安裝環(huán)境夯缺,建議先把一臺(tái)裝完蚤氏,然后把解壓好的目錄、環(huán)境變量文件直接拷貝發(fā)送到另外幾臺(tái)設(shè)備

2.8 啟動(dòng)hadoop與測(cè)試

  • 格式化namenode(第一次啟動(dòng)執(zhí)行)在hadoop安裝的根目錄下執(zhí)行:

      bin/hdfs namenode -format
    
  • 啟動(dòng)Hadoop踊兜,在hadoop安裝的根目錄下執(zhí)行:

    • 啟動(dòng)NameNode和DataNode進(jìn)程

        sbin/start-dfs.sh
      
    • 啟動(dòng)ResourceManager和NodeManager進(jìn)程

        sbin/start-yarn.sh
      
  • 檢測(cè)是否啟動(dòng)成功

      jps
    
  • 如果出現(xiàn)如下信息竿滨,說(shuō)明啟動(dòng)成功

      5509 NodeManager
      5833 Jps
      4683 NameNode
      4796 DataNode
      5421 ResourceManager
      4943 SecondaryNameNode                  
    
  • 訪問(wèn)Hadoop的webapp服務(wù)
    - 在瀏覽器中輸入:http://master:18088(剛剛自己配置的地址)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市捏境,隨后出現(xiàn)的幾起案子于游,更是在濱河造成了極大的恐慌,老刑警劉巖垫言,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贰剥,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡筷频,警方通過(guò)查閱死者的電腦和手機(jī)蚌成,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)凛捏,“玉大人担忧,你說(shuō)我怎么就攤上這事∨餮ⅲ” “怎么了瓶盛?”我有些...
    開(kāi)封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)示罗。 經(jīng)常有香客問(wèn)我蓬网,道長(zhǎng),這世上最難降的妖魔是什么鹉勒? 我笑而不...
    開(kāi)封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任帆锋,我火速辦了婚禮,結(jié)果婚禮上禽额,老公的妹妹穿的比我還像新娘锯厢。我一直安慰自己皮官,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布实辑。 她就那樣靜靜地躺著捺氢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪剪撬。 梳的紋絲不亂的頭發(fā)上摄乒,一...
    開(kāi)封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音残黑,去河邊找鬼馍佑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛梨水,可吹牛的內(nèi)容都是我干的拭荤。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼疫诽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼舅世!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起奇徒,我...
    開(kāi)封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤雏亚,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后摩钙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罢低,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年腺律,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宜肉。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡匀钧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谬返,到底是詐尸還是另有隱情之斯,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布遣铝,位于F島的核電站佑刷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏酿炸。R本人自食惡果不足惜瘫絮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望填硕。 院中可真熱鬧麦萤,春花似錦鹿鳖、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至命满,卻和暖如春涝滴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背胶台。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工歼疮, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人概作。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓腋妙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親讯榕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子骤素,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345