Hadoop分佈式環境部署

機器選型

實際應用中通常分爲2種java

第一種:硬件服務器node

第二種:雲主機linux

準備工做

在VM ware12環境下搭建三臺服務器vim

配置ip,主機名,本地映射(/etc/hosts)centos

另外兩臺由原先克隆而來安全

克隆機器後,修改mac地址服務器

使用root:網絡

vim /etc/udev/rules.d/70-persistent-net.rules

(1)刪除eth0架構

(2)將eth1修改成eth0併發

(3)複製mac地址

(4)編輯網卡信息 ,修改ip地址和Mac地址

vim /etc/sysconfig/network-scripts/ifcfg-eth0
(5)修改hostname
vim /etc/sysconfig/network

(6)修改Hosts文件,配置映射

(7)關閉防火牆

 $ sudo chkconfig iptables off

(8)關閉Selinux(安全性過高,解決沒必要要的麻煩)必需要重啓機器才能生效配置

$ sudo vim /etc/sysconfig/selinux
設置值:
SELINUX=disabled

(7)重啓網絡

service network restart

(8)經過ifconfig命令查看是否配置成功

(9)重啓虛擬機

注:這裏我三臺虛擬機ip,主機名依次爲

192.168.59.223  bigdata-hpsk02.huadian.com
192.168.59.224  bigdata-hpsk03.huadian.com
192.168.59.225  bigdata-hpsk04.huadian.com

安裝方式

1.不使用批量安裝工具

手動分發,將配置好的第一臺hadoop分發到每臺機器。這裏我使用分發的方式

2.使用批量工具:大數據集羣監控運維管理工具CM

CDH:開源軟件基礎架構Hadoop的服務。

能夠在http://archive.cloudera.com/cdh5/cdh/5/下載穩定的版本

部署

在Linux中建立統一的用戶,統一的目錄

建立用戶

useradd username

給用戶添加密碼

passwd username

建立目錄

在根目錄下建立這四個文件夾,datas放測試數據 softwares放軟件安裝壓縮包 modules軟件安裝目錄 tools開發IDE以及工具 。

 

修改句柄數

linux系統都是用文件來表示的,併發調優時修改句柄數時必須的。設置的是當前用戶準備要運行的程序的限制。

若是單個進程打開的文件句柄數量超過了系統定義的值由於有時候會趕上Socket/File: Can't open so many files的問題

ulimit -a   #查看linux相關參數

其中一個方法,是想ulimit修改命令放入/etc/profile裏面,可是這個作法並很差

正確的作法,應該是修改/etc/security/limits.conf

sudo vim /etc/security/limits.conf

在文件末尾添加:

重啓機器,查看句柄數

ulimit -n

hadoop啓動方式

單個進程啓動:用於啓動
    sbin/hadoop-daemon.sh start namenode
    sbin/hadoop-daemon.sh start datanode
    sbin/yarn-daemon.sh start resourcemanager
    sbin/yarn-daemon.sh start nodemanager
分別啓動yarn和hdfs:用於關閉
    sbin/start-dfs.sh
        -》namenode
        -》datanode
        -》secondarynamenode
    sbin/start-yarn.sh
        -》resourcemanager
        -》全部的nodemanager
一次性啓動全部進程
        sbin/start-all.sh

ssh免祕鑰登陸別的機器啓動相應的服務

(1)每臺機器爲本身建立公私鑰

ssh-keygen -t rsa

能夠在用戶目錄下的.ssh文件夾中看到生成的id_rsa id_rsa.pub

(2)每臺機器將本身的公鑰發給每臺機器包括本身

ssh-copy-id 本身的主機名
ssh-copy-id 另外第一臺主機名
ssh-copy-id 另外第二臺主機名

驗證是否3臺機器能互相登陸成功(爲了省事就貼一張圖了):

NTP時間同步:經過ntp服務實現每臺機器的 時間一致

直接使用ntp服務同步外網時間服務器
			-》選擇一臺機器做爲中間同步服務A,A與外網進行同步,B,C同步A
				-》配置A   sudo vim  /etc/ntp.conf
					刪除默認配置:
						restrict default kod nomodify notrap nopeer noquery
						restrict -6 default kod nomodify notrap nopeer noquery
						restrict 127.0.0.1
						restrict -6 ::1
						
						server 0.centos.pool.ntp.org
						server 1.centos.pool.ntp.org
						server 2.centos.pool.ntp.org
					-》添加
						配置A容許哪些機器與我同步
						restrict 192.168.59.0 mask 255.255.255.0 nomodify notrap
						配置A跟誰同步
						server 202.112.10.36
						配置本地同步
						server  127.127.1.0     # local clock     注:127.127.1.0 ntp時間服務器的保留ip地址,做用是使用本機做爲客戶端的時間服務器
						fudge   127.127.1.0 stratum 10  
					-》啓動ntp服務
						sudo service ntpd start
				-》配置B,C同步A
					sudo vim /etc/ntp.conf
					server 192.168.59.223
					
					-》手動同步
						sudo ntpdate 192.168.59.223
					-》開啓ntp服務
						sudo service ntpd start

偷懶作法:

三臺機器同時設置時間

sudo date -s "2018-04-27 15:56:00"

安裝JDK

(1)上傳壓縮包到softwares目錄下

(2)解壓到指定目錄

tar -zxvf /opt/softwares/jdk-8u91-linux-x64.tar.gz -C /opt/modules/

(3)分發到第二臺,第三臺機器

scp -r jdk1.8.0_91 hpsk@bigdata-hpsk03.hpsk.com:/opt/modules/
scp -r jdk1.8.0_91 hpsk@bigdata-hpsk04.hpsk.com:/opt/modules/

(4)配置環境變量(每臺機器)

vi /etc/profile
進入後在尾部添加
##JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.8.0_91
export PATH=$PATH:$JAVA_HOME/bin

安裝hadoop

(1)上傳壓縮包到softwares目錄下

(2)解壓到指定目錄

tar -zxvf /opt/softwares/hadoop-2.7.3.tar.gz -C /opt/modules/
z:表示gz壓縮  x:表示解包  v:表示壓縮過程  -C指定解壓地址

(3)節點分佈

機器1 datanode nodemanager namenode(工做)

機器2 datanode nodemanager nn rm(備份)

機器3 datanode nodemanager resourcemanager(工做)

datanode 存儲數據 nodemanager處理數據

本地的Nodemanager優先處理本地的datanode避免了跨網絡傳輸。(Hadoop本身的優化)

namenode resourcenode都是主節點,都須要接收用戶的請求,若是都放在機器1上負載比較高,故將他們分佈到不一樣的機器。

(4)修改配置文件

env.sh:配置環境變量

默認會先去全局變量/etc/profile中找JAVA_HOME 可是爲了避免出現問題在下面三個文件中配置JAVA_HOME環境變量。配置文件在/hadoop2.7.3/etc/hadoop/hadoop-env mapred-env yarn-env

site-xml:配置用戶自定義需求

core-site.xml:配hadoop全局的一些屬性

先在hadoop目錄下建立臨時存儲目錄,存儲元數據

<configuration>
    //fs.defaultFS:hdfs的入口  配置第一臺機器的入口
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://bigdata-hpsk02.huadian.com:8020</value>
    </property>
    
    //hadoop.tmp.dir hadoop臨時存儲目錄
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/modules/hadoop-2.7.3/tmpData</value>
    </property>
</configuration>

hdfs-site.xml:配置hdfs的屬性

<configuration>
     //dfs.replication:文件副本數
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    //訪問權限,不是hdfs同屬用戶沒有權限訪問。關閉,讓全部人訪問hdfs。工做中不能這麼配
    <property>
        <name>dfs.permissions.enabled</name>
        <value>true</value>
    </property>
</configuration>

mapred-site.xml :配置MapReduce

//讓MapReduce運行在Yarn上
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    //jobhistory
</configuration>

yarn-site.xml

<configuration>
//指定resourcemanager在哪臺機器上運行
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>bigdata-training03.hpsk.com</value>
    </property>
//指定yarn上運行的程序是什麼類型
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

slaves:配置全部從節點的地址 (一行一個)

bigdata-hpsk02.huadian.com
bigdata-hpsk03.huadian.com
bigdata-hpsk04.huadian.com

分發

從第一臺機器將hadoop-2.7.3目錄分發給另一臺機器

scp -r hadoop-2.7.3 hpsk@bigdata-hspk03.huadian.com:/opt/modules/

或者另外一臺機器從第一臺上下載

scp -r hpsk@bigdata-hpsk02.huadian.com:/opt/modules/hadoop-2.7.3  /opt/modules/

注意要改變/opt/modules目錄用戶權限

啓動測試

格式化文件系統,格式化的時候會產生新的元數據,在哪裏啓動namenode就在哪臺機器上進行格式化

bin/hdfs namenode -format

啓動對應進程,用單個進程命令

在第一臺機器上啓動namenode

sbin/hadoop-daemon.sh start namenode

namenode將元數據保存在咱們以前在core-site.xml中配置的臨時存儲目錄。裏面包含fsimage:文件系統快照 edit logs:對文件系統的改動序列。

注意:不能再第一臺機器上執行start-yarn.sh 會默認啓動resourcemanager主節點。咱們要將resourcemanager在第三臺機器上啓動。

啓動三臺機器的datanode

sbin/hadoop-daemon.sh start datanode

在第三臺上機器上啓動yarn

sbin/start-yarn.sh

報錯了..緣由:找不到resourcemanager的主機名。主機名不對。。

yarn-site.xml文件中

改爲第三臺的主機名:

bigdata-hpsk04.huadian.com

最後查看進程:

第一臺機器:

第二臺:

第三臺:

到此分佈式環境搭建完畢~

在HDFS上建立一個Input目錄

新建一個測試文件

內容:

上傳到input目錄下

測試wordcount程序,能夠看到鏈接的是第三臺,第三臺纔有resourcemanager

查看結果

停掉全部進程能夠用統一的執行命令

第一臺機器上執行:

sbin/stop-dfs.sh

關閉全部namenode datanode

第三臺機器上執行:

sbin/stop-yarn.sh

關閉全部resourcemanager nodemanager

補充:能夠在空閒的機器上啓動secondary namenode

相關文章
相關標籤/搜索