1. 程式人生 > >centos7搭建hadoop完全分散式叢集

centos7搭建hadoop完全分散式叢集

搭建步驟

 

1.安裝centos7,並進行準備工作(可以安裝一個之後然後克隆)

2.修改各個centos7的hostname和hosts

3.建立使用者和使用者組

4.配置centos7網路,是centos7系統之間以及和hosts主機之間可以通過互相ping通

5.安裝jdk和配置環境變數,檢查是否配置成功

6.配置ssh,實現節點間的無密碼登入ssh node1/2指令驗證時候成功

7.master配置hadoop,並將hadoop檔案傳輸到node節點

8.配置環境變數,並啟動hadoop,檢查是否安裝成功,執行wordcount檢查是否成功

 

採用三臺機器

         主機名                                 ip                         對應的角色

         namenode                 188.2.72.57               namenode(主)

         datanode1                 188.2.72.58               datanode1(從1)

         datanode2                 188.2.72.59               datanode2(從2)

 

由於是現有三臺centos系統,所以省略安裝centos系統的步驟

 

1.修改主機名 (以namenode舉例)

         hostnamectl set-hostname namenode(永久修改主機名)

         reboot(重啟系統)

 

2.修改hosts(以namenode舉例)

         188.2.72.60               namenode

         188.2.72.59               datanode2

         188.2.72.58               datanode1

 

3.嘗試看看能不能ping通(以namenode舉例)

         ping -c 3 datanode1

 

4.準備安裝oracle的jdk,但安裝之前需要檢視有沒有安裝jdk

         java-version

 

 

5.檢視有jdk,且是centos7系統自帶的openjdk,我們需要刪除掉安裝oracle的jdk

         rpm -qa | grep java(查詢java版本)

         rpm -e --nodeps xxx(逐個刪除完)

         rpm -qa | grep java(沒有顯示任何)

那麼就刪除完了。我們可以安裝oracle的jdk了

 

6. 來到java目錄(注,我是已經提前建立了java目錄跟將tar.gz包複製到了java目錄中)

         cd /usr/java

         ls

7.解壓jdk

tar zxvf jdk-8u144-linux-x64.tar.gz

         ls

8. Jdk的環境變數配置

方式一:

         設定環境變數,執行vi  /etc/profile

 

export JAVA_HOME=/usr/java/jdk1.8.0_144

export PATH=$JAVA_HOME/bin

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=.:$JAVA_HOME/lib:${JRE_HOME}/lib

 

方式二:

sudo vi ~/.bashrc

 

在開啟的檔案的末尾新增以下資訊:

         export JAVA_HOME=/usr/java/jdk1.8.0_144

         export JRE_HOME=${JAVA_HOME}/jre  

         export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  

         export PATH=${JAVA_HOME}/bin:$PATH 

9. 使用source命令來使剛才的jdk環境變數配置檔案生效

source ~/.bashrc

 

10. 在root使用者下給hadoop使用者增加sudo許可權

         chmod u+w /etc/sudoers

         vi /etc/sudoers

         chmod u-w /etc/sudoers

 

11.ssh生成金鑰

ssh-keygen -t rsa(連續三次回車)

 

12. 切換到.ssh目錄下,進行檢視公鑰和私鑰

cd .ssh

ls

 

13.將id_rsa.pub複製到authorized_keys,並且給設定許可權

         cp id_rsa.pub authorized_keys

         然後將三個authorized_keys都下載到本地,對三個authorized_keys的內容都合併,意思就是說。三臺機器中的authorized_keys的內容都是相同的。

 

 

         chmod 700 .ssh

         chmod 600 .ssh/authorized_keys

 

14.ssh 與別的節點無金鑰連線(每個節點都需要進行連線)

 

         ssh datanode1(連線到datanode1)

         hostname(檢視主機名,是否連線到)

         exit(登出,不然會在連線到的機器上操作)

         ssh datanode2(連線到datanode1)

         hostname(檢視主機名,是否連線到)

         exit(登出,不然會在連線到的機器上操作)

 

15.hadoop環境配置

 

16.首先,切換到/usr/java/ ,再切換到root使用者下,再 /root/java

 

cd /usr/java

su root

 

16.解壓hadoop (因為之前已經將hadoop的tar.gz安裝包移動過來,所以就略過移動那一步)

tar zxvf hadoop-2.7.4.tar.gz

 

17. 將檔名hadoop-2.7.4改為hadoop

mv hadoop-2.7.4 hadoop

ls

 

18. 將剛改名的hadoop檔案,許可權賦給hadoop使用者

 

chown -R hadoop:hadoop hadoop

ls -l(檢視許可權)

 

19. 建立目錄

    mkdir  /root/hadoop 

    mkdir  /root/hadoop/tmp 

    mkdir  /root/hadoop/var 

    mkdir  /root/hadoop/dfs 

    mkdir  /root/hadoop/dfs/name 

    mkdir  /root/hadoop/dfs/data

20.修改配置檔案

         cd /usr/java/hadoop/etc/hadoop

         ls

         vi hadoop-env.sh

 

         export JAVA_HOME=/usr/java/jdk1.8.0_144

 

21.修改slaves

         vi slaves

         將裡面的localhost刪除,增加:

         datanode1

         datanode2

22.修改core-site.xml檔案

 

         vi core-site.xml

 

在<configuration>節點內加入配置:

 

<configuration>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://namenode:9000</value>

    </property>

    <property>

        <name>hadoop.tmp.dir</name>

        <value>/home/hadoop/hadoop-2.7.4/dfs/tmp</value>

    </property>

</configuration>

 

23. 新建並且修改mapred-site.xml

         在該版本中,有一個名為mapred-site.xml.template的檔案,

         複製該檔案,然後改名為mapred-site.xml,命令是:

 

         cp mapred-site.xml.template mapred-site.xml(複製檔案)

    vi mapred-site.xml(修改配置檔案)

 

在<configuration>節點內加入配置:

<configuration>

 

        <property>

                <name>mapreduce.framework.name</name>

                <value>yarn</value>

        </property>

        <property>

                <name>mapred.job.tracker</name>

                <value>namenode:9010</value>

        </property>

        <property>

                <name>mapreduce.jobtracker.http.address</name>

                <value>namenode:50030</value>

        </property>

        <property>

                <name>mapreduce.jobhisotry.address</name>

                <value>namenode:10020</value>

        </property>

        <property>

                <name>mapreduce.jobhistory.webapp.address</name>

                <value>namenode:19888</value>

        </property>

        <property>

                <name>mapreduce.jobhistory.done-dir</name>

                <value>/jobhistory/done</value>

        </property>

        <property>

                <name>mapreduce.intermediate-done-dir</name>

                <value>/jobhisotry/done_intermediate</value>

        </property>

        <property>

                <name>mapreduce.job.ubertask.enable</name>

                <value>true</value>

        </property>

 

</configuration>

 

24. 修改vi hdfs-site.xml配置檔案,新增以下資訊

         vi hdfs-site.xml

 

在<configuration>節點內加入配置:

 

<configuration>

 

        <property>

                <name>dfs.permissions</name>

                <value>false</value>

        </property>

        <property>

                <name>dfs.replication</name>

                <value>3</value>

        </property>

        <property>

                <name>dfs.namenode.secondary.http-address</name>

                <value>namenode:50090</value>

                <description>The secondary namenode http server address and port.</description>

        </property>

        <property>

                <name>dfs.namenode.name.dir</name>

                <value>/home/hadoop/hadoop-2.7.4/dfs/name</value>

        </property>

        <property>

                <name>dfs.datanode.data.dir</name>

                <value>/home/hadoop/hadoop-2.7.4/dfs/data</value>

        </property>

        <property>

                <name>dfs.webhdfs.enabled</name>

                <value>true</value>

        </property>

        <property>

                <name>dfs.namenode.checkpoint.dir</name>

                <value>file:///home/hadoop/hadoop-2.7.4/dfs/namesecondary</value>

                        <description>Determines where on the local filesystem the DFSsecondary name node should store the temporary images to merge. If this is acomma-delimited list of directories then the image is replicated in all of thedirectories for redundancy.</description>

        </property>

</configuration>

 

25. 修改yarn-site.xml配置檔案

 

vi yarn-site.xml

 

在<configuration>節點內加入配置:

 

         <configuration>

 

<!-- Site specific YARN configuration properties -->

    <property>

        <name>yarn.resourcemanager.hostname</name>

        <value>namenode</value>

    </property>

    <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

    <property>

        <name>yarn.nodemanager.vmem-pmem-ratio</name>

        <value>10</value>

    </property>

</configuration>

 

 

 

 

26.hadoop需要配置的檔案

 

 

27.關閉防火牆

                  systemctl stop firewalld.service       (關閉防火牆)

         注:如果不關閉防火牆,可能導致無法使用叢集

 

28.初始化namenode,因為namenode是namenode,datanode1和datanode2都是datanode,所以只需要對namenode進行初始化操作,也就是對hdfs進行格式化。

 

         bin/hadoop  namenode  -format(在usr/java/hadoop目錄下執行該命令)

 

 

29.啟動叢集

         sbin/start-all.sh

 

 

30.檢視叢集是否啟動

         jps

 

31.管理員身份執行記事本

 

https://img-blog.csdnimg.cn/20181217205953557

https://img-blog.csdnimg.cn/20181217205953582

https://img-blog.csdnimg.cn/20181217205953599

 

32.開啟本地的host檔案

         188.2.72.60     namenode

 

 

33.最後,現在是來驗證hadoop是否安裝成功。在Windows上可以通過 http://cnq:50070 訪問WebUI來檢視NameNode,叢集、檔案系統的狀態。這裡是HDFS的Web頁面

http://namenode:50070