1. 程式人生 > >Hadoop 完全分布式部署

Hadoop 完全分布式部署

roo pda adding value 時間同步 解壓 pre module ive

完全分布式部署Hadoop

分析:

1)準備3臺客戶機(關閉防火墻、靜態ip、主機名稱)

2)安裝jdk

3)配置環境變量

4)安裝hadoop

5)配置環境變量

6)安裝ssh

7)集群時間同步

7)配置集群

8)啟動測試集群

  1. 1. 虛擬機準備

準備三臺裝有Centos系統的虛擬機,可以參考https://www.cnblogs.com/Transkai/p/10404127.html

然後對靜態ip進行配置,可以參考 https://www.cnblogs.com/Transkai/p/10404253.html

  1. 2. 主機名設置

0)查看主機名基本語法:

[root@hadoop-001 /]#hostname

1)修改linux的hosts文件

(1)進入Linux系統查看本機的主機名。通過hostname命令查看

[root@hadoop ~]# hostname

hadoop-001

(2)如果感覺此主機名不合適,我們可以進行修改。通過編輯/etc/sysconfig/network文件

[root@hadoop-001 /]# vi /etc/sysconfig/network

文件中內容

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME= hadoop-001

註意:主機名稱不要有“_”下劃線

(3)打開此文件後,可以看到主機名。修改此主機名為我們想要修改的主機名hadoop-001。

(4)保存退出。

(5)打開/etc/hosts

[root@hadoop-001 /]# vim /etc/hosts

添加如下內容

192.168.137.188 hadoop001

(6)並重啟設備,重啟後,查看主機名,已經修改成功

2)修改window10的hosts文件

(1)進入C:\Windows\System32\drivers\etc路徑

(2)打開hosts文件並添加如下內容

192.168.137.188 hadoop-001

並按以上步驟配置好hadoop-002,hadoop-003

  1. 3. 安裝jdk,Hadoop,配置環境變量

配置jdk文件

1、解壓jdk軟件

jdk-8u161-linux-x64.tar.gz

1、配置環境變量

export JAVA_HOME=/home/hadoop/bigdatasoftware/jdk1.8.0_161

PATH=$PATH:$JAVA_HOME/bin

配置hadoop(本地模式)

1、解壓hadoop軟件

tar -zxvf hadoop-2.7.2.tar.gz

2、配置hadoop的環境變量

a、vi ~/.bash_profile

添加以下內容:

export HADOOP_HOME=/home/hadoop/bigdatasoftware/hadoop-2.7.2

PATH=$PATH:$HADOOP_HOME/bin:$$HADOOP_HOME/sbin/

b、source ~/.bash_profile

3、hadoop version

Hadoop 2.7.2

  1. 4. SSH無密碼登錄

(1)進入到我的home目錄

cd ~/.ssh

(2)生成公鑰和私鑰:

ssh-keygen -t rsa

然後敲(三個回車),就會生成兩個文件id_rsa(私鑰)、id_rsa.pub(公鑰)

(3)將公鑰拷貝到要免密登錄的目標機器上

ssh-copy-id 192.168.1.102

.ssh文件夾下的文件功能解釋

(1)~/.ssh/known_hosts :記錄ssh訪問過計算機的公鑰(public key)

(2)id_rsa :生成的私鑰

(3)id_rsa.pub :生成的公鑰

(4)authorized_keys :存放授權過得無秘登錄服務器公鑰

  1. 5. 配置集群

1)集群部署規劃

hadoop-001

hadoop-002

hadoop-003

HDFS

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

YARN

NodeManager

ResourceManager

NodeManager

NodeManager

2)配置文件

(1)core-site.xml

<!-- 指定HDFS中NameNode的地址 -->

<property>

<name>fs.defaultFS</name>

<value>hdfs:// hadoop-001:9000</value>

</property>

<!-- 指定hadoop運行時產生文件的存儲目錄 -->

<property>

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

<value>/opt/module/hadoop-2.7.2/data/tmp</value>

</property>

(2)Hdfs

hadoop-env.sh

export JAVA_HOME=/opt/module/jdk1.7.0_79

hdfs-site.xml

<configuration>

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

<property>

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

<value> hadoop-003:50090</value>

</property>

</configuration>

slaves

hadoop-001

hadoop-002

hadoop-003

(3)yarn

yarn-env.sh

export JAVA_HOME=/opt/module/jdk1.7.0_79

yarn-site.xml

<configuration>

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

<!-- reducer獲取數據的方式 -->

<property>

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

<value>mapreduce_shuffle</value>

</property>

<!-- 指定YARN的ResourceManager的地址 -->

<property>

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

<value>Hadoop-002</value>

</property>

</configuration>

(4)mapreduce

mapred-env.sh

export JAVA_HOME=/opt/module/jdk1.7.0_79

mapred-site.xml

<configuration>

<!-- 指定mr運行在yarn上 -->

<property>

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

<value>yarn</value>

</property>

</configuration>

6.scp指令

1)scp可以實現服務器與服務器之間的數據拷貝。

2)案例實操

(1)將hadoop-001中/home/hadoop文件拷貝到hadoop-002、hadoop-003上。

[hadoop@hadoop-001 /]# scp -r /home/hadoop/bigdatasoftware hadoop@hadoop-002:/home/hadoop/

[hadoop@hadoop-001 /]# scp -r /home/hadoop/bigdatasoftware hadoop@hadoop-003:/home/hadoop/

(2)將192.168.1.102服務器上的文件拷貝到當前用戶下。

[root@hadoop101 opt]# scp root@hadoop102:/etc/profile /opt/tmp/

(3)實現兩臺遠程機器之間的文件傳輸(hadoop103主機文件拷貝到hadoop104主機上)

[hadoop@hadoop102 test]$ scp hadoop@hadoop103:/opt/test/haha hadoop@hadoop104:/opt/test/

7.集群啟動及測試

1)啟動集群

(0)如果集群是第一次啟動,需要格式化namenode

[[email protected]]# bin/hdfs namenode -format

(1)啟動HDFS:

[root@hadoop-001 hadoop-2.7.2]# sbin/start-dfs.sh

[root@hadoop-001 hadoop-2.7.2]# jps

4166 NameNode

4482 Jps

4263 DataNode

[root@hadoop-002 桌面]# jps

3218 DataNode

3288 Jps

[root@hadoop-003 桌面]# jps

3221 DataNode

3283 SecondaryNameNode

3364 Jps

(2)啟動yarn

sbin/start-yarn.sh

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

2)集群基本測試

(1)上傳文件到集群

上傳小文件

bin/hdfs dfs -mkdir -p /home/hadoop/tmp/conf

bin/hdfs dfs -put etc/hadoop/*-site.xml /home/hadoop/tmp/conf

上傳大文件

[hadoop@hadoop-001 hadoop-2.7.2]$ bin/hadoop fs -put /opt/software/hadoop-2.7.2.tar.gz /user/hadoop/input

(2)上傳文件後查看文件存放在什麽位置

文件存儲路徑

[hadoop@hadoop102 subdir0]$ pwd

/opt/module/hadoop-2.7.2/data/tmp/dfs/data/current/BP-938951106-192.168.10.107-1495462844069/current/finalized/subdir0/subdir0

查看文件內容

[hadoop@hadoop102 subdir0]$ cat blk_1073741825

hadoop

hadoop

hadoop

(3)拼接

-rw-rw-r--. 1 hadoop hadoop 134217728 5月 23 16:01 blk_1073741836

-rw-rw-r--. 1 hadoop hadoop 1048583 5月 23 16:01 blk_1073741836_1012.meta

-rw-rw-r--. 1 hadoop hadoop 63439959 5月 23 16:01 blk_1073741837

-rw-rw-r--. 1 hadoop hadoop 495635 5月 23 16:01 blk_1073741837_1013.meta

[hadoop@hadoop102 subdir0]$ cat blk_1073741836>>tmp.file

[hadoop@hadoop102 subdir0]$ cat blk_1073741837>>tmp.file

[hadoop@hadoop102 subdir0]$ tar -zxvf tmp.file

(4)下載

[hadoop@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -get /user/hadoop/input/hadoop-2.7.2.tar.gz

3)性能測試集群

寫海量數據

讀海量數據

7集群時間同步

時間同步的方式:找一個機器,作為時間服務器,所有的機器與這臺集群時間進行定時的同步,比如,每日十分鐘,同步一次時間。

配置時間同步:

1)時間服務器配置

(1)檢查ntp是否安裝

[root@hadoop102 桌面]# rpm -qa|grep ntp

ntp-4.2.6p5-10.el6.centos.x86_64

fontpackages-filesystem-1.41-1.1.el6.noarch

ntpdate-4.2.6p5-10.el6.centos.x86_64

(2)修改ntp配置文件

vi /etc/ntp.conf

修改內容如下

a)修改1

#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap為

restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

b)修改2

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為

#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

c)添加3

server 127.127.1.0

fudge 127.127.1.0 stratum 10

3)修改/etc/sysconfig/ntpd 文件

vim /etc/sysconfig/ntpd

增加內容如下

SYNC_HWCLOCK=yes

4)重新啟動ntpd

[root@hadoop102 桌面]# service ntpd status

ntpd 已停

[root@hadoop102 桌面]# service ntpd start

正在啟動 ntpd: [確定]

5)執行:

chkconfig ntpd on

2)其他機器配置(必須root用戶)

(1)在其他機器配置10分鐘與時間服務器同步一次

[root@hadoop103 hadoop-2.7.2]# crontab -e

編寫腳本

*/10 * * * * /usr/sbin/ntpdate hadoop102

(2)修改任意機器時間

date -s "2019-2-26"

(3)十分鐘後查看機器是否與時間服務器同步

date

Hadoop 完全分布式部署