1. 程式人生 > >Hadoop筆記之六——Hadoop2.x 完全分散式搭建

Hadoop筆記之六——Hadoop2.x 完全分散式搭建

1、準備伺服器,並規劃伺服器角色

    3臺 虛擬機器Linux     s-hadoop01.lele.com   4G 記憶體 40G (機子配置較差 1G) NameNode  ResourceManager   DataNode  NodeManager     s-hadoop02.lele.com   2G 記憶體 40G (1G)               DataNode  SecondaryNameNode          NodeManager     s-hadoop03.lele.com   2G 記憶體 40G (1G)               DataNode                             NodeManager

         生產環境:NameNode 單獨一臺伺服器   ResourceManager與NameNode一般在同一臺伺服器                 SecondaryNameNode與NameNode一定要部署在不同的伺服器上                 SecondaryNameNode的配置(記憶體)需要與NameNode保持一致                                  DataNode與NodeManager同一臺伺服器

                   2、安裝環境準備  

    網路準備使用:                               (1)、檢查受網路管理器管理的網路介面:  nmcli dev status或者nmcli connection show                   (2)、解除安裝虛擬機器自帶網絡卡(也可以不解除安裝): 開啟 vi /etc/sysconfig/network-scripts/ifcfg-eth33(每個機子都可能不一樣,但格式會是“ifcfg-eth數字”),                             把ONBOOT=no,改為ONBOOT=yes                               修改/etc/yum/pluginconf.d/fastestmirror.conf中的enable,設定為0                              sudo yum groupremove "Virtualization"                               sudo yum remove libvirt                    (3)、自定義靜態ip: vim /etc/sysconfig/network-scripts/ifcfg-ens33                    內容模版:                     TYPE="Ethernet"                     BOOTPROTO="static"                     IPADDR=192.168.1.126                     GATEWAY=192.168.1.1                     NETMASK=255.255.255.0                     DNS1=192.168.1.1                     NM_CONTROLLED=no                     DEFROUTE="yes"                     PEERDNS="yes"                     PEERROUTES="yes"                     IPV4_FAILURE_FATAL="no"                     IPV6INIT="yes"                     IPV6_AUTOCONF="yes"                     IPV6_DEFROUTE="yes"                     IPV6_PEERDNS="yes"                     IPV6_PEERROUTES="yes"                     IPV6_FAILURE_FATAL="no"                     IPV6_ADDR_GEN_MODE="stable-privacy"                     NAME="ens33"                     //這個不能改UUID=66c93861-628b-48ca-a3cb-e50e7cddce0b                     DEVICE=ens33                     ONBOOT="yes"                   (4)、重啟網路服務  sudo systemctl restart network.service                   (5)、修改dns: nmcli con mod UUID ipv4.dns "114.114.114.114 8.8.8.8"(將UUID改成自己的mac地址)                   (6)、dns重生效:  nmcli con up UUID(UUID改稱自己的mac地址)               IP,主機名以及主機名與IP的對映關係          $ ping s-hadoop01.lele.com          JDK與JAVA_HOME環境變數     javac -version     查詢自帶的openjdk有哪些     rpm -qa | grep java     然後使用rpm -e --nodeps jdk名稱來解除安裝     配置環境變數:vim /etc/profile         export JAVA_HOME=/opt/modules/jdk1.7.0_67         export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar         export PATH=$PATH:$JAVA_HOME/bin

                   3)時間同步(重點)切換到root使用者     a.先選擇其中一臺作為ntp時間伺服器     s-hadoop01.lele.com      安裝ntpd服務     # yum -y install ntp          開啟ntpd服務     # service ntpd start     # chkconfig ntpd on     # chkconfig ntpd --list | grep ntpd          修改/etc/ntp.conf配置檔案         1) 去掉restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap註釋,同時修改IP與你的主機IP在同一網段         2)註釋掉外部ntp時間伺服器             ##server 0.centos.pool.ntp.org iburst             ##server 1.centos.pool.ntp.org iburst             ##server 2.centos.pool.ntp.org iburst             ##server 3.centos.pool.ntp.org iburst                      3)    新增一下兩行內容             server 127.127.1.0 # local clock             fudge 127.127.1.0 stratum 10

    # service ntpd restart          驗證:         在其他伺服器上通過ntpdate命令來進行時間同步         ntpdate -u ip/主機名                  同步時,看下防火牆設定         關閉ntp伺服器的防火牆         # systemctl stop firewalld.service         禁止防火牆開機啟動          systemctl disable firewalld.service         在另外一臺上進行同步時間         # ntpdate -u s-hadoop01.lele.com              29 May 09:48:18 ntpdate[1377]: adjust time server 192.168.199.144 offset 0.000066 sec                       讓BIOS時鐘時間與系統時間進行同步(所有伺服器上)         # hwclock --localtime                  # hwclock --localtime -w         修改配置檔案         # vim /etc/sysconfig/ntpd         在首行新增————設定是否允許BIOS與系統時間進行同步。         SYNC_HWCLOCK=yes              b.其他伺服器與這臺ntp時間伺服器進行時間同步     通過crontab定時任務進行     每10分鐘進行時間同步     0-59/10 * * * *  /usr/sbin/ntpdate -u s-hadoop01.lele.com          4)防火牆關閉     systemctl stop firewalld.service      # systemctl disable httpd.service      # systemctl list-units --type=service | grep firewalld

      3、hadoop完全分散式安裝

    將hadoop資料夾改成普通使用者:    sudo chown -R brifeng:lele hadoop

    先在其中一臺伺服器上進行解壓安裝,並修改好配置,然後通過scp分發到其他伺服器上          前提:要求所有伺服器上的使用者名稱、密碼,以及目錄保持一致          /opt/modules/hadoop      安裝目錄          解壓安裝          修改配置檔案          http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-common/ClusterSetup.html               1) hadoop-env.sh     export JAVA_HOME=/opt/modules/jdk1.7.0_67

    export HADOOP_CONF_DIR=/opt/modules/hadoop-2.5.0-cdh5.3.6/etc/hadoop

    2)core-site.xml     //@前面是使用者名稱,後面是ip地址或者主機名     //修改的時候要注意ip地址和主機名都要註明,否則連線的就是root使用者。。     //以上純屬扯淡         <property>   <name>fs.defaultFS</name>   <value>hdfs://hadoop.lele.org:8020</value>   <description>The name of the default file system.  A URI whose   scheme and authority determine the FileSystem implementation.  The   uri's scheme determines the config property (fs.SCHEME.impl) naming   the FileSystem implementation class.  The uri's authority is used to   determine the host, port, etc. for a filesystem.</description> </property>         <property>   <name>hadoop.tmp.dir</name>   <value>/opt/modules/hadoop-2.5.0-cdh5.3.6/tmp/data/</value>   <description>A base for other temporary directories.</description> </property>          3)hdfs-site.xml              secondaryNamenode  http https <property>   <name>dfs.namenode.secondary.http-address</name>   <value>hadoop.lele.org03:50090</value>   <description>     The secondary namenode http server address and port.   </description> </property>

<property>   <name>dfs.namenode.secondary.https-address</name>   <value>hadoop.lele.org03:50091</value>   <description>     The secondary namenode HTTPS server address and port.   </description> </property>

         4) mapred-site.xml      <property>   <name>mapreduce.framework.name</name>   <value>yarn</value>   <description>The runtime framework for executing MapReduce jobs.   Can be one of local, classic or yarn.   </description> </property>

         5) yarn-site.xml      <property>     <description>The hostname of the RM.</description>     <name>yarn.resourcemanager.hostname</name>     <value>hadoop.lele.org02</value>   </property>           <property>     <description>the valid service name should only contain a-zA-Z0-9_ and can not start with numbers</description>     <name>yarn.nodemanager.aux-services</name>    <value>mapreduce_shuffle</value>  </property>           6)slaves masters     $ vim slaves     配置datanode     [email protected]     [email protected]     [email protected]     $ vim masters     配置secondaryNamenode     [email protected]

    7)scp分發     $ rm -rf doc/           $ scp -r hadoop-2.5.0/ [email protected]:/opt/modules/hadoop/     $ scp -r hadoop-2.5.0/ [email protected]:/opt/modules/hadoop/          8)ssh免密碼登入設定(針對具體使用者起作用)              1) 在各伺服器生成公鑰、私鑰檔案                  2)分發公鑰檔案給對方         1)$ ssh-keygen         在使用者的home的.ssh目錄下生成公鑰、私鑰檔案         id_rsa  id_rsa.pub         2)把公鑰檔案傳給對方,並且在對方機器上將公鑰檔案追寫到authorized_keys         免密碼登入到本機         $ ssh-copy-id -i localhost         $ssh localhost         $ exit                  ssh 免密碼登入到其他伺服器         $ ssh-copy-id -i s-hadoop01.lele.com         $ ssh-copy-id -i s-hadoop02.lele.com         $ ssh-copy-id -i s-hadoop03.lele.com                       9)啟動叢集              格式化NameNode

        $ bin/hdfs namenode -format

         Storage directory /opt/modules/hadoop/hadoop-2.5.0/tmp/data/dfs/name has been successfully formatted.(namenode元資料存放目錄)              啟動叢集             1)啟動hdfs             在NameNode所在的節點上執行             sbin/start-dfs.sh             NameNode  ---> DataNode ---> SecondaryNameNode                          2)啟動YARN             在ResourceManager所在的節點上執行             sbin/start-yarn.sh                          ResourceManager ---> NodeManager                      停止:             1)停止HDFS         在NameNode所在的節點上執行         $ sbin/stop-dfs.sh                  2)停止YARN         在ResourceManager節點上執行         $ ./stop-yarn.sh         

    4、通過web頁面訪問     

    知識點補充:         1、檢視埠:sudo lsof -i:50070 -P             會輸出內容,找到PID,然後根據PID殺掉程序           kill掉埠:sudo kill -9 PID