?HDFS詳細介紹
HDFS是什么
?HDFS是Hadoop三大組件(HDFS、MapReduce、YARN)之一 全稱是:Hadoop Distributed File System(Hadoop分布式文件系統);是Hadoop技術棧內提供的分布式數據存儲解決方案 可以在多臺服務器上構建存儲集群,存儲海量的數據。
了解為什么海量數據需要使用分布式存儲技術
答:1、太大,單臺服務器無法承擔。
? ? ? ? 2、靠數量取勝 多臺服務器組合,才能Hold住。
? ? ? ? 3、分布式不僅僅是解決了能存的問題, 多臺服務器協同工作 帶來的也是性能的橫向擴展。(網絡傳輸、磁盤讀寫、CPU、內存等各方面的綜合提升)——分布式的性能提升。
????????
?HDFS的基礎架構
?
?
?一個典型的HDFS集群,就是由1個DataNode加若干(至少一個)DataNode組成。?
?
?HDFS各個組件介紹
?NameNode:
HDFS系統的主角色,是一個獨立的進程 負責管理HDFS整個文件系統 負責管理DataNode。
?SecondaryNameNode:
NameNode的輔助,是一個獨立進程 主要幫助NameNode完成元數據整理工作(打雜)。
?DataNode:
HDFS系統的從角色,是一個獨立進程 主要負責數據的存儲,即存入數據和取出數據。
HDFS集群環境部署
注意:請完成集群前置準備工作:
配置多臺虛擬機:http://t.csdnimg.cn/hGqMz
http://t.csdnimg.cn/hGqMz
ip固定http://t.csdnimg.cn/4IqRchttp://t.csdnimg.cn/4IqRc
主機映射:http://t.csdnimg.cn/1C15xhttp://t.csdnimg.cn/1C15x
ssh免密登錄(以root用戶為例,其他用戶創建后一樣):http://t.csdnimg.cn/dEITyhttp://t.csdnimg.cn/dEITy
Jdk:http://t.csdnimg.cn/zKRC7http://t.csdnimg.cn/zKRC7
關閉防火墻以及SELinux關閉:http://t.csdnimg.cn/K19d7http://t.csdnimg.cn/K19d7
為了系統的安全和穩定,建議使用自建的用戶來管理大數據相關的軟件,這里使用hadoop用戶為HDFS最高權限用戶。
下載
官方網址:https://hadoop.apache.org,課程使用當前最新的發行版:3.3.4版。
?上傳 & 解壓(我的Hadoop版本為3.3.4)
注意標紅位置,改寫為自己想放的路徑,我的軟件通常都放在/export/server!!!!!!!!!
?1. 上傳Hadoop安裝包到node1節點中。
自己選擇弄
2. 解壓縮安裝包到/export/server/中
tar -zxvf hadoop-3.3.4.tar.gz? -C /export/server
3. 構建軟鏈接
ln -s /export/server/hadoop-3.3.4 hadoop
4. 進入hadoop安裝包內
cd hadoop
5. 各個文件夾含義如下?
bin,存放Hadoop的各類程序(命令)
etc,存放Hadoop的配置文件 include,C語言的一些頭文件
ib,存放Linux系統的動態鏈接庫(.so文件)
libexec,存放配置Hadoop系統的腳本文件(.sh和.cmd)
licenses-binary,存放許可證文件 sbin,管理員程序(super bin)
share,存放二進制源碼(Java jar包)?
?修改配置文件,應用自定義設置
1.? 配置HDFS集群,我們主要涉及到如下文件的修改:
workers:?? ??? ?配置從節點(DataNode)有哪些
hadoop-env.sh:?? ??? ?配置Hadoop的相關環境變量
core-site.xml:?? ??? ?Hadoop核心配置文件
hdfs-site.xml:?? ??? ?HDFS核心配置文件
這些文件均存在與$HADOOP_HOME/etc/hadoop文件夾中。
2.? 配置workers文件
進入配置文件目錄
cd etc/hadoop
編輯workers文件
vim workers
填入如下內容
node1
node2
node3
?表明集群記錄了三個從節點(DataNode)
3. 配置hadoop-env.sh文件
export JAVA_HOME=/export/server/jdk
export HADOOP_HOME=/export/server/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
變量解釋:?
JAVA_HOME,指明JDK環境的位置在哪
HADOOP_HOME,指明Hadoop安裝位置
HADOOP_CONF_DIR,指明Hadoop配置文件目錄位置
HADOOP_LOG_DIR,指明Hadoop運行日志目錄位置
通過記錄這些環境變量, 來指明上述運行時的重要信息?
?4.配置core-site.xml文件
?在文件內部填入如下內容
<configuration> ?
????????<property> ? ?
????????????????<name>fs.defaultFS</name> ? ?
????????????????<value>hdfs://node1:8020</value> ?
????????</property> ?
????????<property> ? ?
????????????????<name>io.file.buffer.size</name> ? ?
????????????????<value>131072</value> ?
????????</property>
</configuration>
?name:fs.defaultFS
含義:HDFS文件系統的網絡通訊路徑
value:hdfs://node1:8020
協議為hdfs://
namenode為node1
namenode通訊端口為8020
name:io.file.buffer.size
含義:io操作文件緩沖區大小
value:131072 bit
hdfs://node1:8020為整個HDFS內部的通訊地址,應用協議為hdfs://(Hadoop內置協議) 表明DataNode將和node1的8020端口通訊,node1是NameNode所在機器 此配置固定了node1必須啟動NameNode進程
?5. 配置hdfs-site.xml文件
在文件內部填入如下內容
<configuration> ?
????????<property> ? ?
????????????????<name>dfs.datanode.data.dir.perm</name> ? ?
????????????????<value>700</value> ?
????????</property> ?
????????<property> ? ?
????????????????<name>dfs.namenode.name.dir</name> ? ?
????????????????<value>/data/nn</value> ?
????????</property> ?
????????<property> ? ?
????????????????<name>dfs.namenode.hosts</name> ? ?
????????????????<value>node1,node2,node3</value> ?
????????</property>
????????<property> ? ?
????????????????<name>dfs.blocksize</name> ? ?
????????????????<value>268435456</value> ?
????????</property> ?
????????<property> ? ?
????????????????<name>dfs.namenode.handler.count</name> ? ?
????????????????<value>100</value> ?
????????</property> ?
????????<property> ? ?
????????????????<name>dfs.datanode.data.dir</name> ? ?
????????????????<value>/data/dn</value> ?
????????</property>
</configuration>
?解釋
根據
namenode數據存放node1的/data/nn
datanode數據存放node1、node2、node3的/data/dn
所以應該 在node1節點:
mkdir -p /data/nn
mkdir /data/dn
在node2和node3節點:
mkdir -p /data/dn
?從node1將hadoop安裝文件夾遠程復制到node2、node3
?分發
?node1執行如下命令
cd /export/server
scp -r hadoop-3.3.4 node2:`pwd`/
scp -r hadoop-3.3.4 node3:`pwd`/
?在node2執行,為hadoop配置軟鏈接
ln -s /export/server/hadoop-3.3.4 /export/server/hadoop
?在node3執行,為hadoop配置軟鏈接
?ln -s /export/server/hadoop-3.3.4 /export/server/hadoop
?配置系統的環境變量
所有機器
vim /etc/profile
export HADOOP_HOME=/export/server/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
?授權為hadoop用戶
?hadoop部署的準備工作基本完成
為了確保安全,hadoop系統不以root用戶啟動,我們以普通用戶hadoop來啟動整個Hadoop服務 所以,現在需要對文件權限進行授權。
?注意:請確保已經提前創建好了hadoop用戶,并配置好了hadoop用戶之間的免密登錄!!!!
以root身份,在node1、node2、node3(所有機器)三臺服務器上均執行如下命令?
chown -R hadoop:hadoop /data
chown -R hadoop:hadoop /export
?格式化整個文件系統
格式化namenode
?確保以hadoop用戶執行(否則會出問題,能解決,但請自行尋找解決辦法)
su - hadoop
格式化namenode
hadoop namenode -format
?啟動
?# 一鍵啟動hdfs集群
start-dfs.sh
# 一鍵關閉hdfs集群
stop-dfs.sh
# 如果遇到命令未找到的錯誤,表明環境變量未配置好,可以以絕對路徑執行 /export/server/hadoop/sbin/start-dfs.sh
/export/server/hadoop/sbin/stop-dfs.sh
?查看HDFS WEBUI
?啟動完成后,可以在瀏覽器打開: http://node1:9870,即可查看到hdfs文件系統的管理網頁。
注意:沒有配置windows系統的主機映射,將node1改為主機node1的ip!!!!!!!!
?ip固定http://t.csdnimg.cn/4IqRchttp://t.csdnimg.cn/4IqRc
?
在Windows掛載HDFS文件系統
NFShttp://t.csdnimg.cn/hq3CU