NO IMAGE

企業級大資料環境搭建
虛擬機器模擬,與物理機設定完全相同

一:系統準備

1,在虛擬機器中最小安裝CENT OS7系統
    視自己電腦記憶體大小而定:
    虛擬機器記憶體設定1G~2G
    CPU 1~4核心
    硬碟20G~60G
2,設定虛擬機器網路
    檢視虛擬機器網路設定,記錄網段和閘道器
    禁用IPV6
    編輯 /etc/defulat/grub
    在第6行新增
    ipv6.disable=1
    儲存
    重新載入配置
    grub2-mkconfig -o /boot/grub2/grub.cfg
    重啟
    reboot

    分配靜態IP地址,編輯 /etc/sysconfig/network-scripts/ifcfg-網絡卡名
    修改
    BOOTPROTO=static
    IPADDR=網段內靜態IP
    NETMASK=255.255.255.0
    GATEWAY=記錄的閘道器地址
    DNS1=114.114.114.114
    ONBOOT=yes

    修改/etc/resolv.conf
    新增
    nameserver 114.114.114.114

    systemctl restart network  #重啟網路服務
3,實現主機與虛擬機器互訪

4,新增使用者,設定密碼
    adduser bda
    passwd bda
    之後reboot用bda登入

5,建立目錄/opt下:software, modules, data, tools
    更改所有權
    sudo chown -R bda:bda /opt/*

6,如果有,解除安裝自帶的Open-JDK
    rpm -qa|grep java
    rpm -e –nodeps 各 個 名 字
    安裝官方JDK
    版本根據hadoop版本要求確定,此處用7u67
    下載該版本JDK壓縮包到 /opt/software
    修改許可權u x
    sudo chmod u x 檔名
    解壓縮到/opt/moduls
    tar -zxf 檔名 -C /opt/modules
    配置JAVA_HOME
    /etc/profile
    export JAVA_HOME=/opt/modules/jdk1.7.0_67
    export PATH=$PATH:$JAVA_HOME/bin

二,叢集準備

1,複製多份虛擬機器
    分別設定靜態IP
    /etc/sysconfig/network-scripts/ifcfg-網絡卡名
    機器名
    /etc/hostname
    彼此新增機器名和IP地址對映
    /etc/hosts
    實現虛擬機器互訪

2,實現SSH工具連線
    配置sudo免密碼
    /etc/sudoers
    bda ALL=(root)NOPASSWD:ALL

3,關閉防火牆
  1,  /etc/sysconfig/selinux

        SELINUX=disabled

 2,systemctl stop firewalld.service #停止firewall

 3.systemctl disable firewalld.service #禁止firewall開機啟動

 4.firewall-cmd –state #檢視預設防火牆狀態(關閉後顯示notrunning,開啟後顯示running

三,安裝HADOOP

1.2 修改host檔案

我們希望三個主機之間都能夠使用主機名稱的方式相互訪問而不是IP,我們需要在hosts中配置其他主機的host。因此我們在主機的/etc/hosts下均進行如下配置:

複製程式碼
[[email protected] ~]# vi /etc/hosts
配置主機host
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.21 node21
192.168.100.22 node22
192.168.100.23 node23
將配置傳送到其他主機(同時在其他主機上配置)
[[email protected] ~]# scp -r /etc/hosts [email protected]:/etc/
[[email protected] ~]# scp -r /etc/hosts [email protected]:/etc/
測試
[[email protected] ~]# ping node21
[[email protected] ~]# ping node22
[[email protected] ~]# ping node23
複製程式碼

1.3 新增使用者賬號

複製程式碼
在所有的主機下均建立一個賬號admin用來執行hadoop ,並將其新增至sudoers中
[[email protected] ~]# useradd admin    新增使用者通過手動輸入修改密碼
[[email protected] ~]# passwd  admin  更改使用者 admin 的密碼
123456  passwd: 所有的身份驗證令牌已經成功更新。
設定admin使用者具有root許可權  修改 /etc/sudoers 檔案,找到下面一行,在root下面新增一行,如下所示:
[[email protected] ~]# visudo
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
admin   ALL=(ALL)     ALL
修改完畢  :wq! 儲存退出,現在可以用admin帳號登入,然後用命令 su - ,切換使用者即可獲得root許可權進行操作。 
複製程式碼

1.4 /opt目錄下建立資料夾

複製程式碼
1)在root使用者下建立module、software資料夾
[[email protected] opt]# mkdir module
[[email protected] opt]# mkdir software
2)修改module、software資料夾的所有者
[[email protected] opt]# chown admin:admin module
[[email protected] opt]# chown admin:admin software
3)檢視module、software資料夾的所有者
[[email protected] opt]# ll
total 0
drwxr-xr-x. 5 admin admin 64 May 27 00:24 module
drwxr-xr-x. 2 admin admin 267 May 26 11:56 software
複製程式碼

2   安裝配置jdk1.8

複製程式碼
[[email protected] ~]# rpm -qa|grep java   #查詢是否安裝java軟體:
[[email protected] ~]# rpm -e –nodeps 軟體包   #如果安裝的版本低於1.7,解除安裝該jdk
線上安裝   wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"  http://download.oracle.com/otn/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz
這裡使用本地下載然後 xftp上傳到  /opt/software/ 下 
[[email protected] software]# tar zxvf  jdk-8u171-linux-x64.tar.gz  -C  /opt/module/
[[email protected] module]# mv jdk1.8.0_171 jdk1.8
設定JAVA_HOME  
vi /etc/profile
export  JAVA_HOME=/opt/module/jdk1.8
export  PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/sbin
source  /etc/profile
向其他節點複製jdk
[[email protected] ~]# scp -r /opt/module/jdk1.8 [email protected]:`pwd`
[[email protected] ~]# scp -r /opt/module/jdk1.8 [email protected]:`pwd`
配置各個主機下jdk的環境變數,由於我的電腦上linux都是新安裝的,環境變數相同,因此直接複製到了其他主機上。如果不同的主機的環境變數不同,請手動設定
[[email protected] ~]# scp /etc/profile [email protected]:/etc/
[[email protected] ~]# scp /etc/profile [email protected]:/etc/
在每個主機上都重新編譯一下/etc/profile
[[email protected]]# source /etc/profile
測試  java -version
複製程式碼

 設定SSH免金鑰

關於ssh免密碼的設定,要求每兩臺主機之間設定免密碼,自己的主機與自己的主機之間也要求設定免密碼。 這項操作可以在admin使用者下執行,執行完畢公鑰在/home/admin/.ssh/id_rsa.pub

[[email protected] ~]# ssh-keygen -t rsa
[[email protected] ~]# ssh-copy-id node21
[[email protected] ~]# ssh-copy-id node22
[[email protected] ~]# ssh-copy-id node23

node1與node2為namenode節點要相互免祕鑰   HDFS的HA

[[email protected] ~]# ssh-keygen -t rsa
[[email protected] ~]# ssh-copy-id node22
[[email protected] ~]# ssh-copy-id node21
[[email protected] ~]# ssh-copy-id node23

node2與node3為yarn節點要相互免祕鑰  YARN的HA

[[email protected] ~]# ssh-keygen -t rsa
[[email protected] ~]# ssh-copy-id node23
[[email protected] ~]# ssh-copy-id node21
[[email protected] ~]# ssh-copy-id node22 

4   安裝hadoop叢集

4.1  解壓安裝hadoop

[[email protected] software]# tar zxvf hadoop-2.7.6.tar.gz -C /opt/module/

4.2  hadoop叢集部署規劃

節點名稱 NN1 NN2 DN RM NM
node21NameNode   DataNode NodeManager
node22 SecondaryNameNodeDataNodeResourceManagerNodeManager
node23  DataNode NodeManager

5   配置hadoop叢集

注意:配置檔案在hadoop2.7.6/etc/hadoop/下

5.1 修改core-site.xml

複製程式碼
[[email protected] hadoop]$ vi core-site.xml
<configuration>
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node21:9000</value>
</property>
<!-- 指定hadoop執行時產生檔案的儲存目錄 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.6/data/full/tmp</value>
</property>
</configuration>
複製程式碼

5.2 修改hadoop-env.sh

[[email protected]  hadoop]$ vi hadoop-env.sh 
修改 export JAVA_HOME=/opt/module/jdk1.8

5.3 修改hdfs-site.xml

複製程式碼
[[email protected]  hadoop]$ vi hdfs-site.xml
<configuration>
<!-- 設定dfs副本數,不設定預設是3個   -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 設定secondname的埠   -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node22:50090</value>
</property>
</configuration>
複製程式碼

5.4 修改slaves

[[email protected]  hadoop]$ vi slaves
node21
node22
node23

5.5 修改mapred-env.sh

[[email protected] hadoop]$ vi mapred-env.sh
修改 export JAVA_HOME=/opt/module/jdk1.8

5.6 修改mapred-site.xml

複製程式碼
[[email protected] hadoop]# mv mapred-site.xml.template mapred-site.xml
[[email protected] hadoop]$ vi mapred-site.xml
<configuration>
<!-- 指定mr執行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
複製程式碼

5.7 修改yarn-env.sh

[[email protected] hadoop]$ vi yarn-env.sh
修改 export JAVA_HOME=/opt/module/jdk1.8

5.8 修改yarn-site.xml

複製程式碼
[[email protected] hadoop]$ vi yarn-site.xml
<configuration>
<!-- reducer獲取資料的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node22</value>
</property>
</configuration>
複製程式碼

5.9 分發hadoop到節點

[[email protected] module]# scp -r hadoop-2.7.6/ [email protected]:`pwd`
[[email protected] module]# scp -r hadoop-2.7.6/ [email protected]:`pwd`

5.10 配置環境變數

[[email protected] ~]$ sudo vi /etc/profile
末尾追加
export  HADOOP_HOME=/opt/module/hadoop-2.7.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
編譯生效  source  /etc/profile

6  啟動驗證叢集

6.1 啟動叢集

 如果叢集是第一次啟動,需要格式化namenode

[[email protected] hadoop-2.7.6]$ hdfs namenode -format 

啟動Hdfs:

複製程式碼
[[email protected] ~]# start-dfs.sh
Starting namenodes on [node21]
node21: starting namenode, logging to /opt/module/hadoop-2.7.6/logs/hadoop-root-namenode-node21.out
node21: starting datanode, logging to /opt/module/hadoop-2.7.6/logs/hadoop-root-datanode-node21.out
node22: starting datanode, logging to /opt/module/hadoop-2.7.6/logs/hadoop-root-datanode-node22.out
node23: starting datanode, logging to /opt/module/hadoop-2.7.6/logs/hadoop-root-datanode-node23.out
Starting secondary namenodes [node22]
node22: starting secondarynamenode, logging to /opt/module/hadoop-2.7.6/logs/hadoop-root-secondarynamenode-node22.out
複製程式碼

啟動Yarn: 注意:Namenode和ResourceManger如果不是同一臺機器,不能在NameNode上啟動 yarn,應該在ResouceManager所在的機器上啟動yarn。

[[email protected] ~]# start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /opt/module/hadoop-2.7.6/logs/yarn-root-resourcemanager-node22.out
node21: starting nodemanager, logging to /opt/module/hadoop-2.7.6/logs/yarn-root-nodemanager-node21.out
node23: starting nodemanager, logging to /opt/module/hadoop-2.7.6/logs/yarn-root-nodemanager-node23.out
node22: starting nodemanager, logging to /opt/module/hadoop-2.7.6/logs/yarn-root-nodemanager-node22.out

jps檢視程序

複製程式碼
[[email protected] ~]# jps
1440 NameNode
1537 DataNode
1811 NodeManager
1912 Jps
[[email protected] ~]# jps
1730 Jps
1339 ResourceManager
1148 DataNode
1198 SecondaryNameNode
1439 NodeManager
[[email protected] ~]# jps
1362 Jps
1149 DataNode
1262 NodeManager
複製程式碼

web頁面訪問

6.2 Hadoop啟動停止方式

複製程式碼
1)各個服務元件逐一啟動
分別啟動hdfs元件: hadoop-daemon.sh  start|stop  namenode|datanode|secondarynamenode
啟動yarn:yarn-daemon.sh  start|stop  resourcemanager|nodemanager
2)各個模組分開啟動(配置ssh是前提)常用
start|stop-dfs.sh     start|stop-yarn.sh
3)全部啟動(不建議使用)
start|stop-all.sh
複製程式碼

完成工作!