hadoop集群環(huán)境搭建之偽分布式集群環(huán)境搭建(一)
1、Linux基本環(huán)境配置
1.1 虛擬機(jī)網(wǎng)絡(luò)模式選擇NAT
一般虛擬機(jī)默認(rèn)是NAT模式
1.2 修改主機(jī)名
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=zhang # 主機(jī)名
1.3 修改IP
切換root的用戶祖凫,修改/etc/sysconfig/network-scripts/ifcfg-eth0
文件
有的是/etc/sysconfig/network-scripts/ifcfg-eno16777736
文件
vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=2ce59a48-ae92-483b-a73c-7844147b6ba0
HWADDR=00:0C:29:21:8D:08
PREFIX0=24
DEFROUTE=no
BOOTPROTO=none # 設(shè)置none
ONBOOT=yes # 開始機(jī)自動網(wǎng)絡(luò)
IPADDR=192.168.108.99 # 設(shè)置IP
NETMASK=255.255.255.0 # 子網(wǎng)掩碼
GATEWAY0=192.168.108.2 # 設(shè)置網(wǎng)關(guān)
1.4 修改主機(jī)名和IP的映射關(guān)系
以root用戶非竿,打開/etc/hosts
文件
vim /etc/hosts
192.168.108.99 zhang
修改/etc/hostname
中文件
vim /etc/hostname
zhang
1.5 關(guān)閉防火墻
#查看防火墻狀態(tài)
service iptables status
#關(guān)閉防火墻
service iptables stop
#查看防火墻開機(jī)啟動狀態(tài)
chkconfig iptables --list
#關(guān)閉防火墻開機(jī)啟動
chkconfig iptables off
1.6 修改sudo
切換到root用戶下
su root
修改/etc/sudoers
文件權(quán)限蜕着,不然修改不了該文件
chmod u+w /etc/sudoers
打開/etc/sudoers
文件
vim /etc/sudoers
給用戶添加執(zhí)行的權(quán)限
# hadoop 用戶名
hadoop ALL=(root) NOPASSWD:ALL
1.7 關(guān)閉linux圖形化界面
centos 7以下版本:
vim /etc/inittab
id:5:initdefault:
改為
id:3:initdefault:
centos 7.x版本:
- 刪除已經(jīng)存在的符號鏈接
rm /etc/systemd/system/default.target
- 默認(rèn)級別轉(zhuǎn)換為3
# 默認(rèn)級別轉(zhuǎn)換為3(文本模式)
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
# 默認(rèn)級別轉(zhuǎn)換為5(圖形模式)
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
- 重啟
reboot
如果需要切換圖形界面執(zhí)行命令:startx
2、Linux之java環(huán)境安裝
在CentOS 7.x的Linux操作系統(tǒng)下,會自帶openjdk的環(huán)境承匣,如果我們想自己安裝jdk環(huán)境蓖乘,需要卸載自帶的openjdk環(huán)境。
步驟如下:
2.1 查看java環(huán)境
java -version
2.2 查詢jdk
# 查看linux的jdk
rpm -qa | grep jdk
2.3 刪除jdk
# 移除openjdk
yum -y remove java-openjdk-xxxxx
java-openjdk-xxxxx :是需要刪除的openjdk
刪除自帶的openjdk環(huán)境后韧骗,我們就開始安裝我們的jdk嘉抒。
2.4 從Windows或其他機(jī)器獲取tar包
# 將文件傳出Linux中的用戶目錄
scp D:/dsoftmanager/jdk-8u151-linux-x64.tar.gz root@192.168.108.99:/home/hadoop
D:/dsoftmanager/jdk-8u151-linux-x64.tar.gz
:A機(jī)器的tar包目錄位置
root@192.168.108.99:/home/hadoop
:linux機(jī)器存儲tar的目錄位置
2.5 解壓tar包到指定的目錄
# 創(chuàng)建java目錄
mkdir /java
# 將文件復(fù)制到j(luò)ava目錄
cp /home/hadoop/jdk-8u151-linux-x64.tar.gz /java
# 進(jìn)入/java
cd /java
# 解壓縮
tar -zxvf jdk-8u151-linux-x64.tar.gz
2.6 配置環(huán)境變量
# 打開配置文件
vim /etc/profile
打開/etc/profile
文件,在文件的末尾袍暴,放入下面的配置信息:
# 配置java環(huán)境
JAVA_HOME=/java/jdk1.8.0_151
PATH=$PATH:$JAVA_HOME/bin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export JAVA_HOME PATH CLASSPATH
2.7 重啟機(jī)器
# 立即重啟機(jī)器
shutdown -r now
或者
reboot
如果不重啟些侍,配置不會生效。
2.8 java環(huán)境測試
# 測試java環(huán)境是否安裝成功
java -version
javac -version
出現(xiàn)如下信息政模,表示安裝成功岗宣。
[hadoop@localhost Desktop]$ java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
[hadoop@localhost Desktop]$ javac -version
javac 1.8.0_151
3、hadoop偽分布式集群環(huán)境搭建
關(guān)于Linux機(jī)器環(huán)境和java環(huán)境配置淋样,參考我的上一篇文章:hadoop集群環(huán)境搭建之Linux基本環(huán)境和java環(huán)境配置(一)耗式,在Linux環(huán)境和java環(huán)境配置好之后,我們開始搭建hadoop的偽分布式集群(偽分布式集群:在一臺機(jī)器上跑hadoop需要的服務(wù))吧趁猴。
3.1 上傳hadoop安裝包
scp d:/dsoftmanager/hadoop-2.7.5.tar.gz root@192.168.108.99:/home/hadoop
3.2 解壓安裝包
# 創(chuàng)建一個hadoop的目錄
mkdir /hadoop
# 將/home/hadoop目錄下的hadoop-2.7.5.tar.gz文件復(fù)制到/hadoop目錄下
cp /home/hadoop/hadoop-2.7.5.tar.gz /hadoop
# 進(jìn)入/hadoop目錄
cd /hadoop
# 解壓
tar -zxvf hadoop-2.7.5.tar.gz
3.3 配置hadoop環(huán)境變量
# 打開配置文件
vim /etc/profile
# 在配置文件中末尾輸入
export HADOOP_HOME=/hadoop/hadoop-2.7.5
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
重啟Linux刊咳,測試hadoop配置是否生效
# 重啟
reboot
# 測試hadoop環(huán)境配置是否生效
echo ${HADOOP_HOME}
輸出:/hadoop/hadoop-2.7.5
3.4 修改hadoop配置
-
3.4.1 將
${HADOOP_HOME}
設(shè)置權(quán)限許可sudo chown -R hadoop:hadoop ${HADOOP_HOME}
-
3.4.2 配置
hadoop-env.sh
的JAVA_HOME
參數(shù)# 使用sudo命令,打開hadoop-env.sh文件 sudo vim ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh # 修改JAVA_HOME的環(huán)境配置為如下所示: export JAVA_HOME=/java/jdk1.8.0_151
-
3.4.3 配置core-site.xml文件
# 創(chuàng)建一個tmp目錄 mkdir ${HADOOP_HOME}/tmp # 設(shè)置權(quán)限 sudo chown hadoop:hadoop ${HADOOP_HOME}/tmp # 打開core-site.xml文件 sudo vim ${HADOOP_HOME}/etc/hadoop/core-site.xml # 在<configuration>中添加配置 <configuration> <!-- 指定HADOOP所使用的文件系統(tǒng)schema(URI)儡司,HDFS的老大(NameNode)的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://zhang:9000</value> </property> <!-- 指定hadoop運行時產(chǎn)生臨時文件的存儲目錄 --> <property> <name>hadoop.tmp.dir</name> <value>/hadoop/hadoop-2.7.5/tmp</value> </property> </configuration>
-
3.4.4 配置hdfs-site.xml文件
<configuration> <!-- 指定HDFS副本的數(shù)量 --> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.secondary.http.address</name> <value>192.168.108.99:50090</value> </property> </configuration>
-
3.4.5 配置mapred-site.xml文件
# 將mapred-site.xml.template改為mapred-site.xml sudo mv mapred-site.xml.template mapred-site.xml # 配置mapred-site.xml <configuration> <!-- 指定mr運行在yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
-
3.4.6 配置yarn-site.xml文件
<configuration> <!-- 指定YARN的老大(ResourceManager)的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>zhang</value> </property> <!-- reducer獲取數(shù)據(jù)的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
3.5 格式化namenode
hdfs namenode -format
格式化成功會在${HADOOP_HOME}/tmp/dfs/name/current/
目錄生成幾個文件秽澳,表示成功冲簿,如下:
3.6 啟動各個服務(wù)
進(jìn)入${HADOOP_HOME}
目錄
-
3.6.1 啟動namenode
# 啟動namenode sbin/hadoop-daemon.sh start namenode
出現(xiàn)如下結(jié)果病游,表示啟動成功
image
-
3.6.2 啟動datanode
# 啟動datanode sbin/hadoop-daemon.sh start datanode
出現(xiàn)如下結(jié)果凹蜂,表示啟動成功
image -
3.6.3 啟動SecondaryNameNode
# 啟動secondarynamenode sbin/hadoop-daemon.sh start secondarynamenode
出現(xiàn)如下結(jié)果醉锅,表示啟動成功
image -
3.6.4 啟動Resourcemanager
# 啟動resourcemanager sbin/yarn-daemon.sh start resourcemanager
出現(xiàn)如下結(jié)果鼎俘,表示啟動成功
image
-
3.6.5 啟動nodemanager
# 啟動nodemanager sbin/yarn-daemon.sh start nodemanager
出現(xiàn)如下結(jié)果妥粟,表示啟動成功
image
-
3.6.6 使用
jsp
命令查看是否啟動成功image -
3.6.7 啟動
dfs
服務(wù)和yarn
服務(wù)的另外方式# 開啟dfs渔彰,包括namenode笋婿,datanode誉裆,secondarynamenode服務(wù) sbin/start-dfs.sh # 開啟yarn,包括resourcemanager缸濒,nodemanager sbin/start-yarn.sh # 開啟所有的服務(wù)(過時) sbin/start-all.sh
在執(zhí)行啟動時足丢,需要輸入用戶密碼
image -
3.6.8 打開yarn的web頁面
YARN的Web客戶端端口號是8088,通過http://192.168.108.99:8088/可以查看庇配。
image
3.7 運行MapReduce Job
在Hadoop的share目錄中斩跌,自帶jar包,里面有一些MapReduce的例子捞慌,位置在share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar
耀鸦。我們可以使用這些例子體驗搭建好的Hadoop平臺。我們以wordCount為例。
-
3.7.1 創(chuàng)建輸入目錄
# 進(jìn)入${HADOOP_HOME}目錄 cd ${HADOOP_HOME} # 創(chuàng)建輸入目錄 bin/hdfs dfs -mkdir -p /wordcounttest/input
-
3.7.2 創(chuàng)建測試文件wc.input袖订,內(nèi)容如下:
在
${HADOOP_HOME}
目錄下氮帐,創(chuàng)建一個data
目錄。在data目錄下創(chuàng)建一個wc.input
文件洛姑,文件內(nèi)容:# 創(chuàng)建data目錄 mkdir data # 進(jìn)入data目錄 cd data # 創(chuàng)建wc.input vim wc.input # 在文件中輸入上沐,如下內(nèi)容 hadoop mapreduce hive hbase spark storm sqoop hadoop hive spark hadoop
-
3.7.3 將wc.input文件上傳到HDFS的
/wordcounttest/input
目錄下:bin/hdfs dfs -put data/wc.input /wordcounttest/input
-
3.7.4 查看
/wordcounttest/input
目錄bin/hdfs dfs -ls /wordcounttest/input
image -
3.7.5 運行WordCount MapReduce Job
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /wordcounttest/input /wordcounttest/output
image -
3.7.6 查看輸出結(jié)果目錄
bin/hdfs dfs -ls /wordcounttest/output
imageoutput目錄中有兩個文件,_SUCCESS文件是空文件楞艾,有這個文件說明Job執(zhí)行成功参咙。
part-r-00000文件是結(jié)果文件,其中-r-說明這個文件是Reduce階段產(chǎn)生的結(jié)果硫眯。
-
3.7.7 查看輸出文件結(jié)果
bin/hdfs dfs -cat /wordcounttest/output/part-r-00000
image
3.8 停止Hadoop服務(wù)
# 停止namenode
sbin/hadoop-daemon.sh stop namenode
# 停止datanode
sbin/hadoop-daemon.sh stop datanode
# 停止resourcemanager
sbin/yarn-daemon.sh stop resourcemanager
停止nodemanager
sbin/yarn-daemon.sh stop nodemanager
停止Hadoop服務(wù)的其他方式
# 停止dfs服務(wù)
sbin/stop-dfs.sh
# 停止yarn服務(wù)
sbin/stop-yarn.sh
# 停止所有服務(wù)
sbin/stop-all.sh
注1:開啟歷史服務(wù)
sbin/mr-jobhistory-daemon.sh start historyserver
可以通過http://192.168.108.99:19888
打開蕴侧,可看到JobHistory頁面
點擊進(jìn)去,可看見Job的詳情頁面舟铜。
注2:開啟日志
hadoop默認(rèn)不啟動日志戈盈,我們可以在yarn-site.xml文件中配置啟用日志。
- 1.log環(huán)境配置
<property>
<!--是否啟用日志-->
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<!--設(shè)置日志保存時間,單位秒-->
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
- 2.重啟Yarn進(jìn)程
# 停止yarn服務(wù)
sbin/stop-yarn.sh
# 啟動yarn服務(wù)
sbin/start-yarn.sh
- 3.重啟HistoryServer進(jìn)程
# 停止HistoryServer服務(wù)
sbin/mr-jobhistory-daemon.sh stop historyserver
# 開啟HistoryServer服務(wù)
sbin/mr-jobhistory-daemon.sh start historyserver
- 4.測試日志谆刨,運行一個MapReduce的demo塘娶,產(chǎn)生日志
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /wordcounttest/input /wordcounttest/output2
- 5.查看日志:
進(jìn)入MapReduce的Job頁面
點擊進(jìn)入log頁面,如下
如果沒有配置yarn-site.xml中的log配置痊夭,不會出現(xiàn)log刁岸,而是一串提示文字。