hadoop集群環境搭建之偽分布式集群環境搭建(一)
1、Linux基本環境配置
1.1 虛擬機網絡模式選擇NAT
一般虛擬機默認是NAT模式
1.2 修改主機名
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=zhang # 主機名
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 # 設置none
ONBOOT=yes # 開始機自動網絡
IPADDR=192.168.108.99 # 設置IP
NETMASK=255.255.255.0 # 子網掩碼
GATEWAY0=192.168.108.2 # 設置網關
1.4 修改主機名和IP的映射關系
以root用戶,打開/etc/hosts
文件
vim /etc/hosts
192.168.108.99 zhang
修改/etc/hostname
中文件
vim /etc/hostname
zhang
1.5 關閉防火墻
#查看防火墻狀態
service iptables status
#關閉防火墻
service iptables stop
#查看防火墻開機啟動狀態
chkconfig iptables --list
#關閉防火墻開機啟動
chkconfig iptables off
1.6 修改sudo
切換到root用戶下
su root
修改/etc/sudoers
文件權限,不然修改不了該文件
chmod u+w /etc/sudoers
打開/etc/sudoers
文件
vim /etc/sudoers
給用戶添加執行的權限
# hadoop 用戶名
hadoop ALL=(root) NOPASSWD:ALL
1.7 關閉linux圖形化界面
centos 7以下版本:
vim /etc/inittab
id:5:initdefault:
改為
id:3:initdefault:
centos 7.x版本:
- 刪除已經存在的符號鏈接
rm /etc/systemd/system/default.target
- 默認級別轉換為3
# 默認級別轉換為3(文本模式)
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
# 默認級別轉換為5(圖形模式)
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
- 重啟
reboot
如果需要切換圖形界面執行命令:startx
2、Linux之java環境安裝
在CentOS 7.x的Linux操作系統下,會自帶openjdk的環境,如果我們想自己安裝jdk環境,需要卸載自帶的openjdk環境。
步驟如下:
2.1 查看java環境
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環境后,我們就開始安裝我們的jdk。
2.4 從Windows或其他機器獲取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機器的tar包目錄位置
root@192.168.108.99:/home/hadoop
:linux機器存儲tar的目錄位置
2.5 解壓tar包到指定的目錄
# 創建java目錄
mkdir /java
# 將文件復制到java目錄
cp /home/hadoop/jdk-8u151-linux-x64.tar.gz /java
# 進入/java
cd /java
# 解壓縮
tar -zxvf jdk-8u151-linux-x64.tar.gz
2.6 配置環境變量
# 打開配置文件
vim /etc/profile
打開/etc/profile
文件,在文件的末尾,放入下面的配置信息:
# 配置java環境
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 重啟機器
# 立即重啟機器
shutdown -r now
或者
reboot
如果不重啟,配置不會生效。
2.8 java環境測試
# 測試java環境是否安裝成功
java -version
javac -version
出現如下信息,表示安裝成功。
[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偽分布式集群環境搭建
關于Linux機器環境和java環境配置,參考我的上一篇文章:hadoop集群環境搭建之Linux基本環境和java環境配置(一),在Linux環境和java環境配置好之后,我們開始搭建hadoop的偽分布式集群(偽分布式集群:在一臺機器上跑hadoop需要的服務)吧。
3.1 上傳hadoop安裝包
scp d:/dsoftmanager/hadoop-2.7.5.tar.gz root@192.168.108.99:/home/hadoop
3.2 解壓安裝包
# 創建一個hadoop的目錄
mkdir /hadoop
# 將/home/hadoop目錄下的hadoop-2.7.5.tar.gz文件復制到/hadoop目錄下
cp /home/hadoop/hadoop-2.7.5.tar.gz /hadoop
# 進入/hadoop目錄
cd /hadoop
# 解壓
tar -zxvf hadoop-2.7.5.tar.gz
3.3 配置hadoop環境變量
# 打開配置文件
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環境配置是否生效
echo ${HADOOP_HOME}
輸出:/hadoop/hadoop-2.7.5
3.4 修改hadoop配置
-
3.4.1 將
${HADOOP_HOME}
設置權限許可sudo chown -R hadoop:hadoop ${HADOOP_HOME}
-
3.4.2 配置
hadoop-env.sh
的JAVA_HOME
參數# 使用sudo命令,打開hadoop-env.sh文件 sudo vim ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh # 修改JAVA_HOME的環境配置為如下所示: export JAVA_HOME=/java/jdk1.8.0_151
-
3.4.3 配置core-site.xml文件
# 創建一個tmp目錄 mkdir ${HADOOP_HOME}/tmp # 設置權限 sudo chown hadoop:hadoop ${HADOOP_HOME}/tmp # 打開core-site.xml文件 sudo vim ${HADOOP_HOME}/etc/hadoop/core-site.xml # 在<configuration>中添加配置 <configuration> <!-- 指定HADOOP所使用的文件系統schema(URI),HDFS的老大(NameNode)的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://zhang:9000</value> </property> <!-- 指定hadoop運行時產生臨時文件的存儲目錄 --> <property> <name>hadoop.tmp.dir</name> <value>/hadoop/hadoop-2.7.5/tmp</value> </property> </configuration>
-
3.4.4 配置hdfs-site.xml文件
<configuration> <!-- 指定HDFS副本的數量 --> <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獲取數據的方式 --> <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 啟動各個服務
進入${HADOOP_HOME}
目錄
-
3.6.1 啟動namenode
# 啟動namenode sbin/hadoop-daemon.sh start namenode
出現如下結果,表示啟動成功
image
-
3.6.2 啟動datanode
# 啟動datanode sbin/hadoop-daemon.sh start datanode
出現如下結果,表示啟動成功
image -
3.6.3 啟動SecondaryNameNode
# 啟動secondarynamenode sbin/hadoop-daemon.sh start secondarynamenode
出現如下結果,表示啟動成功
image -
3.6.4 啟動Resourcemanager
# 啟動resourcemanager sbin/yarn-daemon.sh start resourcemanager
出現如下結果,表示啟動成功
image
-
3.6.5 啟動nodemanager
# 啟動nodemanager sbin/yarn-daemon.sh start nodemanager
出現如下結果,表示啟動成功
image
-
3.6.6 使用
jsp
命令查看是否啟動成功image -
3.6.7 啟動
dfs
服務和yarn
服務的另外方式# 開啟dfs,包括namenode,datanode,secondarynamenode服務 sbin/start-dfs.sh # 開啟yarn,包括resourcemanager,nodemanager sbin/start-yarn.sh # 開啟所有的服務(過時) sbin/start-all.sh
在執行啟動時,需要輸入用戶密碼
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 創建輸入目錄
# 進入${HADOOP_HOME}目錄 cd ${HADOOP_HOME} # 創建輸入目錄 bin/hdfs dfs -mkdir -p /wordcounttest/input
-
3.7.2 創建測試文件wc.input,內容如下:
在
${HADOOP_HOME}
目錄下,創建一個data
目錄。在data目錄下創建一個wc.input
文件,文件內容:# 創建data目錄 mkdir data # 進入data目錄 cd data # 創建wc.input vim wc.input # 在文件中輸入,如下內容 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 查看輸出結果目錄
bin/hdfs dfs -ls /wordcounttest/output
imageoutput目錄中有兩個文件,_SUCCESS文件是空文件,有這個文件說明Job執行成功。
part-r-00000文件是結果文件,其中-r-說明這個文件是Reduce階段產生的結果。
-
3.7.7 查看輸出文件結果
bin/hdfs dfs -cat /wordcounttest/output/part-r-00000
image
3.8 停止Hadoop服務
# 停止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服務的其他方式
# 停止dfs服務
sbin/stop-dfs.sh
# 停止yarn服務
sbin/stop-yarn.sh
# 停止所有服務
sbin/stop-all.sh
注1:開啟歷史服務
sbin/mr-jobhistory-daemon.sh start historyserver
可以通過http://192.168.108.99:19888
打開,可看到JobHistory頁面
點擊進去,可看見Job的詳情頁面。
注2:開啟日志
hadoop默認不啟動日志,我們可以在yarn-site.xml文件中配置啟用日志。
- 1.log環境配置
<property>
<!--是否啟用日志-->
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<!--設置日志保存時間,單位秒-->
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
- 2.重啟Yarn進程
# 停止yarn服務
sbin/stop-yarn.sh
# 啟動yarn服務
sbin/start-yarn.sh
- 3.重啟HistoryServer進程
# 停止HistoryServer服務
sbin/mr-jobhistory-daemon.sh stop historyserver
# 開啟HistoryServer服務
sbin/mr-jobhistory-daemon.sh start historyserver
- 4.測試日志,運行一個MapReduce的demo,產生日志
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /wordcounttest/input /wordcounttest/output2
- 5.查看日志:
進入MapReduce的Job頁面
點擊進入log頁面,如下
如果沒有配置yarn-site.xml中的log配置,不會出現log,而是一串提示文字。