一,集群搭建步驟
1.先在一臺虛擬機配置jdk,hadoop
2.克隆
3.修改網絡等相關配置
當我們使用虛擬機時,可能自然而然的會想上面的步驟一樣先搭建一臺虛擬機,做好相關配置,然后進行克隆,繼而修改一些網絡配置來搭建集群,但是在生產過程中是買好的服務器,不存在克隆這一說,所以在此采用的步驟是:
1.建立一臺虛擬機(僅帶jdk安裝包)
2.克隆
3.修改網絡等相關配置
4.配置第一個hadoop節點,編寫集群分發腳本使其他虛擬機完成配置
二,具體搭建過程
這里使用三臺虛擬機來完成集群搭建,hadoop001,hadoop002,hadoop003,把安裝包放在/opt/software,建立虛擬機和克隆就不說了,注意一點,在個人用不能使用sudo命令在/opt建立文件,可以先使用root,然后通過chown scq:scq module/ software/ -R
把擁有著賦給個人用戶即可
修改網絡等配置修改sudoer文件
復制代碼 代碼如下:
su rootll /etc/sudoerschmod u+w /etc/sudoersvim /etc/sudoers
#當用戶執行sudo時,系統會主動尋找/etc/sudoers文件,判斷該用戶是否有執行sudo的權限
修改mac地址,修改ip
復制代碼 代碼如下:
sudo vim /etc/udev/rules.d/70-persistent-net.rules
把eth0刪除,把eth1改為eth0,同時復制ATTR{address}的值
sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0
把ATTR{address}粘到HWADDR
然后更改IP,ip可以通過圖形化界面和命令行兩種方式進行更改
這里需要重啟一下(可以等所有配置完成后再重啟),如果我們只是修改ip,可以通過sudo /etc/rc.d/init.d/network restart
進行網絡重啟即可,但是修改網卡配置通過這個命令會報錯網上說eth0 里仍然記錄著舊的MAC地址,但我更新了sudo /etc/sysconfig/network-scripts/ifcfg-eth0
仍然不行
BOOTPROTO=static 靜態IPBOOTPROTO=dhcp 動態IPBOOTPROTO=none 無(圖形化界面修改時BOOTPROTO值為none)
修改主機名
主機名是什么:在命令行中敲入hostname或者命令行每一行中 @后面的內容
sudo vim /etc/sysconfig/network
重啟生效,不重啟生效的方式不常見,可以自行百度。
修改hosts文件
sudo vim /etc/hosts[/code]關閉防火墻[code]centos6/etc/init.d/iptables status/etc/init.d/iptables start/etc/init.d/iptables stopchkconfig iptables offcentos7systemctl start firewalldfirewall-cmd --statesystemctl stop firewalldsystemctl disable firewalldsystemctl list-unit-files|grep firewalld
注:
1.每次開機時修改一下/etc/resolv.conf文件設置網關
安裝hadoop,形成hadoop集群安裝單個hadoop
①解壓,配置環境變量
②配置文件
對于本地模式,因為本地模式直接運行jvm上,所以不需要對配置文件做配置
對于偽分布式與完全分布式的常見相關配置集中在以下文件中
HDFShadoop-env.shcore-site.xml ---> nameNode節點 + hadoop 運行時產生文件的存儲目錄hdfs-site.xml 副本數 + SecondaryNameNode地址Yarnyarn-env.sh yarn-site.xml reducer 獲取數據的方式 + 指定 YARN 的 ResourceManager 的地址 + 日志信息上傳到 HDFS 系統上MapReducemapred-env.sh mapred-site.xml 指定 mr 運行在 yarn 上 + 歷史服務器 對于xxx-env.sh 就是考慮JAVA_HOME。hadoop-env.sh添加JAVA_HOME,yarn可以辨別JAVA_HOME,mapreduce-env.sh可以不用配置,當然也可以全部都配置
常見的具體配置
property>name>fs.defaultFS/name>value>hdfs://hadoop001:9000/value>
/property>property>name>hadoop.tmp.dir/name>value>/opt/module/hadoop-2.7.2/data/tmp/value>
/property>偽分布式 副本1,無SecondaryNameNode節點property>name>dfs.replication/name>value>3/value>/property>property>name>dfs.namenode.secondary.http-address/name>
value>hadoop004:50090/value>/property>!-- reducer 獲取數據的方式 -->property>name>yarn.nodemanager.aux-services/name>value>mapreduce_shuffle/value>/property>!-- 指定 YARN 的 ResourceManager 的地址 -->property>name>yarn.resourcemanager.hostname/name>value>hadoop001/value>/property>
!-- 日志聚集功能使能 -->property>name>yarn.log-aggregation-enable/name>value>true/value>/property>!-- 日志保留時間設置 7 天 -->property>name>yarn.log-aggregation.retain-seconds/name>value>604800/value>/property>!-- 指定 mr 運行在 yarn 上 -->property>name>mapreduce.framework.name/name>value>yarn/value>/property>
!-- 配置歷史服務器-->property>name>mapreduce.jobhistory.address/name>value>hadoop001:10020/value>/property>property>name>mapreduce.jobhistory.webapp.address/name>value>hadoop001:19888/value>
/property>
編寫集群分發腳本
1) scp:secure copy 安全拷貝
(a)將 hadoop001 中/opt/module 目錄下的軟件拷貝到 hadoop002 上。
[scq@hadoop001 /]$ scp -r /opt/module/* scq@hadoop002:/opt/module
(b)將 hadoop001 服務器上的/opt/module 目錄下的軟件拷貝到 hadoop003 上。
scq@hadoop003 opt]$ scp -r scq@hadoop101:/opt/module/* hadoop003:/opt/module
(c)在 hadoop003 上操作將 hadoop001 中/opt/module 目錄下的軟件拷貝到hadoop004 上。
[scq@hadoop003 opt]$ scp -r scq@hadoop001:/opt/module/* scq@hadoop004:/opt/modul
注意一點:
1.用戶@主機名:地址,在該主機中,這個用戶必須讀地址有讀權限
2.路徑后面記得帶*號
2)rsync 遠程同步工具
主要用于備份和鏡像。具有速度快、避免復制相同內容和支持符號鏈接的優點。
rsync 和 scp 區別: 用 rsync 做文件的復制要比 scp 的速度快, rsync 只對差異文件做更新。 scp 是把所有文件都復制過去。
(1)查看 rsync 使用說明
man rsync | more
(2)基本語法
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
命令 命令參數 要拷貝的文件路徑/名稱 目的用戶@主機:目的路徑
(3) 選項說明
選項 功能
-r 遞歸
-v 顯示復制過程
-l 拷貝符號連接
(4)案例實操
把本機/opt/software 目錄同步到 hadoop002 服務器的 root 用戶下的/opt/目錄
[scq@hadoop001 opt]$ rsync -rvl /opt/software/* hadoop102:/opt/software/
3)rsync 遠程同步工具
腳本需求分析:循環復制文件到所有節點的相同目錄下。
(1)原始拷貝:
rsync -rvl /opt/module root@hadoop103:/opt/
(2)期望腳本:
xsync 要同步的文件名稱
(3)在/home/atguigu/bin 這個目錄下存放的腳本, atguigu 用戶可以在系統任何地方直接執行。
#!/bin/bash#1 獲取輸入參數個數,如果沒有參數,直接退出pcount=$#if((pcount==0)); then echo no args;exit;fi#2 獲取文件名稱p1=$1fname=`basename $p1`echo fname=$fname#3 獲取上級目錄到絕對路徑pdir=`cd -P $(dirname $p1); pwd`echo pdir=$pdir#4 獲取當前用戶名稱user=`whoami`#5 循環for((host=2; host4; host++)); doecho --------------------- hadoop00$host ----------------rsync -rvl $pdir/$fname $user@hadoop00$host:$pdirdone
注1 對于dirname,記住一下幾個場景
輸入:dirname // 結果為 /(斜杠)。
輸入:dirname /a/b/ 結果為:/a。輸入:dirname a 結果為 . (點)。
輸入:dirname a/b 結果為路徑名 a
.即當前目錄,所以腳本中的代碼我們使用絕對路徑和相對路徑都是可行的
注
2.腳本中并沒有使用*,這個應該也不難理解
分發Hadoop,完成集群搭建
[scq@hadoop001 bin]$ ./xsync /opt/module/hadoop-2.7.2
總結
以上所述是小編給大家介紹的Hadoop 運行環境搭建過程,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
您可能感興趣的文章:- Hadoop介紹與安裝配置方法
- hadoop分布式環境搭建過程
- hadoop基于Linux7的安裝配置圖文詳解
- Hadoop源碼分析二安裝配置過程詳解