Hadoop 部署使用

Hadoop 使用筆記

1、單機(jī)部署

環(huán)境準(zhǔn)備

  • centos 7,作為系統(tǒng)環(huán)境

  • hadoop 版本使用hadoop-2.8.2

  • 在安裝 Hadoop 前還需要做一些必備工作

1、 創(chuàng)建hadoop用戶

#這條命令創(chuàng)建了可以登陸的 hadoop 用戶,并使用 /bin/bash 作為 shell。
sudo useradd -m hadoop -s /bin/bash

#使用如下命令設(shè)置密碼,可簡(jiǎn)單設(shè)置為 hadoop,按提示輸入兩次密碼
sudo passwd hadoop

#hadoop 用戶增加sudo權(quán)限
vim /etc/sudoers 

## 找到 Allow root to run any commands anywhere 
root    ALL=(ALL)   ALL
hadoop  ALL=(ALL)   ALL  #增加此條記錄

2、java 環(huán)境安裝
yum 安裝

yum  -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

配置JAVA_HOME

[hadoop@aliyun-gitlab lib]$ which java
/usr/bin/java
[hadoop@aliyun-gitlab lib]$ ls -lrt /usr/bin/java
lrwxrwxrwx 1 root root 22 Nov  8 16:12 /usr/bin/java -> /etc/alternatives/java
[hadoop@aliyun-gitlab lib]$ ls -lrt /etc/alternatives/java
lrwxrwxrwx 1 root root 73 Nov  8 16:12 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre/bin/java
#通過上面命令查詢到openjdk的安裝路徑后,編輯~/.bash_profile文件中配置JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64 
export JRE_HOME=$JAVA_HOME/jre  
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH  
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH 

#文件編輯完成后,執(zhí)行該命令,使變量設(shè)置生效
source ~/.bash_profile

# 檢驗(yàn)變量值
echo $JAVA_HOME     
java -version
$JAVA_HOME/bin/java -version  # 與直接執(zhí)行 java -version 一樣

安裝 Hadoop 2

Hadoop 2 可以通過 http://mirror.bit.edu.cn/apache/hadoop/common/ 或者 http://mirrors.cnnic.cn/apache/hadoop/common/ 下載,一般選擇下載最新的穩(wěn)定版本,即下載 “stable” 下的 hadoop-2.x.y.tar.gz 這個(gè)格式的文件,這是編譯好的,另一個(gè)包含 src 的則是 Hadoop 源代碼,需要進(jìn)行編譯才可使用。

  • 下載hadoop
wget http://mirror.bit.edu.cn/apache/hadoop/common/stable/hadoop-2.8.2.tar.gz

#解壓
tar -zxf hadoop-2.8.2.tar.gz
mv hadoop-2.8.2 hadoop 
  • Hadoop 解壓后即可使用。輸入如下命令來檢查 Hadoop 是否可用,成功則會(huì)顯示 Hadoop 版本信息:
cd hadoop
./bin/hadoop version

#成功后的輸出
[hadoop@aliyun-gitlab hadoop]$ ./bin/hadoop version
Hadoop 2.8.2
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 66c47f2a01ad9637879e95f80c41f798373828fb
Compiled by jdu on 2017-10-19T20:39Z
Compiled with protoc 2.5.0
From source with checksum dce55e5afe30c210816b39b631a53b1d
This command was run using /home/hadoop/hadoop/share/hadoop/common/hadoop-common-2.8.2.jar

簡(jiǎn)單使用

Hadoop 默認(rèn)模式為非分布式模式,無需進(jìn)行其他配置即可運(yùn)行。非分布式即單 Java 進(jìn)程,方便進(jìn)行調(diào)試?,F(xiàn)在我們可以執(zhí)行例子來感受下 Hadoop 的運(yùn)行。Hadoop 附帶了豐富的例子(運(yùn)行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar 可以看到所有例子),包括 wordcount、terasort、join、grep 等。

  • 在此我們選擇運(yùn)行 grep 例子,我們將 input 文件夾中的所有文件作為輸入,篩選當(dāng)中符合正則表達(dá)式 wing[a-z.]+ 的單詞并統(tǒng)計(jì)出現(xiàn)的次數(shù),最后輸出結(jié)果到 output 文件夾中。
cd /home/hadoop/hadoop
mkdir input
#往input 文件寫入測(cè)試文件(此處只簡(jiǎn)單舉例,所以文件較為簡(jiǎn)單)
[hadoop@aliyun-gitlab input]$ cat input/test.txt 
pfc
hgg
skkj
pfcaaa
pfchgy
pfchgy
wingaaa
wingpfc
winghaha

#運(yùn)行計(jì)算
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'wing[a-z.]+'

#查看運(yùn)行結(jié)果
[hadoop@aliyun-gitlab hadoop]$ cat output/*
1   wingpfc
1   winghaha
1   wingaaa

#注意,Hadoop 默認(rèn)不會(huì)覆蓋結(jié)果文件,因此再次運(yùn)行上面實(shí)例會(huì)提示出錯(cuò),需要先將 ./output 刪除。

2、分布式集群搭建

準(zhǔn)備

三臺(tái)服務(wù)器配置,系統(tǒng):centos7.2
三臺(tái)服務(wù)器分配的IP地址:192.168.0.71/72/73
規(guī)劃:71用作主節(jié)點(diǎn)用作hadoop-master,其它三臺(tái)為數(shù)據(jù)節(jié)點(diǎn)72、73用作hadoop-salve1~2
jdk和生成保持一致使用1.8版本
hadoop-2.8.2版本,下載地址:http://mirror.bit.edu.cn/apache/hadoop/common/stable/hadoop-2.8.2.tar.gz

host配置和主機(jī)名

修改三臺(tái)服務(wù)器的hosts文件

sudo vim /etc/hosts
#添加以下三條記錄
192.168.0.71 hadoop-master 
192.168.0.72 hadoop-slave1 
192.168.0.73 hadoop-slave2

檢查防火墻配置,可先關(guān)掉。

查看防火墻狀態(tài)

systemctl status iptables 
#使用firewalld的則使用
systemctl status firewalld

關(guān)閉防火墻

systemctl stop iptables 
#使用firewalld的則使用
systemctl stop firewalld

檢查安全組端口是否開啟

免密登陸配置

  • 下面以配置hadoop-master本機(jī)無密碼登錄為例進(jìn)行講解,用戶需參照下面步驟完成h-salve1~2兩臺(tái)子節(jié)點(diǎn)機(jī)器的本機(jī)無密碼登錄;
    1)生產(chǎn)秘鑰
ssh-keygen -t rsa -C 'hadoop-master' 

2)將公鑰追加到”authorized_keys”文件

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

3)驗(yàn)證本機(jī)能無密碼訪問

#ssh 不是默認(rèn)22端口的需自行修改,如 ssh -p 12345 hadoop-master
ssh hadoop-master

最后,依次配置h-salve1~2無密碼訪問

  • hadoop-master本機(jī)無密碼登錄hadoop-slave1、hadoop-slave2無密碼登錄

  • 配置hadoop-slave1~hadoop-slave2本機(jī)無密碼登錄hadoop-master
    PS: 就是配置好各機(jī)器的互信關(guān)系而已,步驟基本差不多

配置hadoop-master的hadoop環(huán)境

1、hadoop-master上 解壓縮安裝包及創(chuàng)建基本目錄

安裝 Hadoop 2小節(jié),把hadoop mv 到 /usr/local/hadoop下

2、 配置hadoop-master的hadoop環(huán)境變量

#配置環(huán)境變量,修改配置文件 vim ~/.bash_profile

export HADOOP_HOME=/usr/local/hadoop
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$HADOOP_HOME/bin

使得hadoop命令在當(dāng)前終端立即生效

source ~/.bash_profile

3、下面配置,文件都在:/usr/local/hadoop/etc/hadoop路徑下
3.1、配置core-site.xml
修改Hadoop核心配置文件/usr/local/hadoop/etc/hadoop/core-site.xml,通過fs.default.name指定NameNode的IP地址和端口號(hào),通過hadoop.tmp.dir指定hadoop數(shù)據(jù)存儲(chǔ)的臨時(shí)文件夾。

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop-master:9000</value>
    </property>
</configuration>

特別注意: 如沒有配置hadoop.tmp.dir參數(shù),此時(shí)系統(tǒng)默認(rèn)的臨時(shí)目錄為:/tmp/hadoo-hadoop。而這個(gè)目錄在每次重啟后都會(huì)被刪除,必須重新執(zhí)行format才行,否則會(huì)出錯(cuò)。
3.2、配置hdfs-site.xml:
修改HDFS核心配置文件/usr/local/hadoop/etc/hadoop/hdfs-site.xml,通過dfs.replication指定HDFS的備份因子為3,通過dfs.name.dir指定namenode節(jié)點(diǎn)的文件存儲(chǔ)目錄,通過dfs.data.dir指定datanode節(jié)點(diǎn)的文件存儲(chǔ)目錄。

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>/usr/local/hadoop/hdfs/name</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/usr/local/hadoop/hdfs/data</value>
    </property>
</configuration>

3.3、配置mapred-site.xml
拷貝mapred-site.xml.template為mapred-site.xml,在進(jìn)行修改

<configuration>
  <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
  </property>
   <property>
      <name>mapred.job.tracker</name>
      <value>http://hadoop-master:9001</value>
  </property>
</configuration>

3.4、配置yarn-site.xml

<configuration>
<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop-master</value>
    </property>
</configuration>

3.5、配置masters文件
修改/usr/local/hadoop/etc/hadoop/masters文件,該文件指定namenode節(jié)點(diǎn)所在的服務(wù)器機(jī)器。刪除localhost,添加namenode節(jié)點(diǎn)的主機(jī)名hadoop-master;不建議使用IP地址,因?yàn)镮P地址可能會(huì)變化,但是主機(jī)名一般不會(huì)變化。

vim /usr/local/hadoop/etc/hadoop/masters
## 內(nèi)容
hadoop-master

3.6、配置slaves文件(Master主機(jī)特有)
修改/usr/local/hadoop/etc/hadoop/slaves文件,該文件指定哪些服務(wù)器節(jié)點(diǎn)是datanode節(jié)點(diǎn)。刪除locahost,添加所有datanode節(jié)點(diǎn)的主機(jī)名,如下所示。

vim /usr/local/hadoop/etc/hadoop/slaves
## 內(nèi)容
hadoop-slave1
hadoop-slave2

配置hadoop-slave的hadoop環(huán)境

下面以配置hadoop-slave1的hadoop為例進(jìn)行演示,用戶需參照以下步驟完成其他hadoop-slave2服務(wù)器的配置。
1、從hadoop-master復(fù)制hadoop目錄的文件到hadoop-slave1節(jié)點(diǎn)

#此處的ssh端口若不是默認(rèn)22,則需自行修改
scp -r /usr/local/hadoop hadoop-slave1:/usr/local/

登錄hadoop-slave1服務(wù)器,刪除slaves內(nèi)容

rm -f /usr/local/hadoop/etc/hadoop/slaves

2、配置環(huán)境變量,此步驟跟hadoop-master一樣

啟動(dòng)集群

1、格式化HDFS文件系統(tǒng)
進(jìn)入master的~/hadoop目錄,執(zhí)行以下操作

bin/hadoop namenode -format
#格式化namenode,第一次啟動(dòng)服務(wù)前執(zhí)行的操作,以后不需要執(zhí)行。

2、然后啟動(dòng)hadoop:

sbin/start-all.sh

成功啟動(dòng)后,可以訪問 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,還可以在線查看 HDFS 中的文件。
3、使用jps命令查看運(yùn)行情況

#master 執(zhí)行 jps查看運(yùn)行情況
[hadoop@aliyun-gitlab hadoop]$ jps
9922 Jps
27658 NameNode
27933 SecondaryNameNode
28110 ResourceManager
#slave 執(zhí)行 jps查看運(yùn)行情況
[hadoop@wing-ecs hadoop]$ jps
12647 NodeManager
12540 DataNode
13150 Jps

4、命令查看Hadoop集群的狀態(tài)
通過簡(jiǎn)單的jps命令雖然可以查看HDFS文件管理系統(tǒng)、MapReduce服務(wù)是否啟動(dòng)成功,但是無法查看到Hadoop整個(gè)集群的運(yùn)行狀態(tài)。我們可以通過 hadoop dfsadmin -report 進(jìn)行查看。用該命令可以快速定位出哪些節(jié)點(diǎn)掛掉了,HDFS的容量以及使用了多少,以及每個(gè)節(jié)點(diǎn)的硬盤使用情況。

[hadoop@aliyun-gitlab hadoop]$ hadoop dfsadmin -report
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.

Configured Capacity: 147692552192 (137.55 GB)
Present Capacity: 91987980288 (85.67 GB)
DFS Remaining: 91987890176 (85.67 GB)
DFS Used: 90112 (88 KB)
DFS Used%: 0.00%
Under replicated blocks: 1
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
Pending deletion blocks: 0

-------------------------------------------------
Live datanodes (2):

Name: 120.25.85.120:50010 (hadoop-slave2)
Hostname: iZ94v1rbhw4Z
Decommission Status : Normal
Configured Capacity: 105553100800 (98.30 GB)
DFS Used: 45056 (44 KB)
Non DFS Used: 45131362304 (42.03 GB)
DFS Remaining: 55036317696 (51.26 GB)
DFS Used%: 0.00%
DFS Remaining%: 52.14%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Tue Nov 14 14:29:49 CST 2017


Name: 120.78.143.38:50010 (hadoop-slave1)
Hostname: wing-ecs
Decommission Status : Normal
Configured Capacity: 42139451392 (39.25 GB)
DFS Used: 45056 (44 KB)
Non DFS Used: 3023679488 (2.82 GB)
DFS Remaining: 36951572480 (34.41 GB)
DFS Used%: 0.00%
DFS Remaining%: 87.69%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Tue Nov 14 14:29:49 CST 2017

5、hadoop 重啟

sbin/stop-all.sh
sbin/start-all.sh
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 文/胡晨川我是Linux外行,hadoop外行,java更外行,Scala聽也沒聽過,在我腦海中,Spark一直只...
    老樹之見閱讀 6,002評(píng)論 3 39
  • 1 目的將hadoop 2.7.1 安裝到 166、167、168 三臺(tái)機(jī)器上2 提供環(huán)境練習(xí)環(huán)境192.168....
    灼灼2015閱讀 3,623評(píng)論 4 40
  • 之前的有點(diǎn)忘記了,這里在云筆記拿出來再玩玩.看不懂的可以留言 大家可以嘗試下Ambari來配置Hadoop的相關(guān)環(huán)...
    HT_Jonson閱讀 3,195評(píng)論 0 50
  • 一年又一年,人漸到中年。 語言和心思被生活刻劃的越發(fā)粗糲,平日里有些話即使想到了也羞于表達(dá)。倘若是在新舊交替之際說...
    龍瑩潔閱讀 292評(píng)論 0 0
  • 今天在昆瑜山爬山時(shí)遇到一個(gè)好玩的設(shè)施,一排只拴著兩根繩子晃蕩在空中的木頭,人們抓著繩子踩著木頭依次而過。 閨女看到...
    果茉莉閱讀 366評(píng)論 3 0

友情鏈接更多精彩內(nèi)容