大資料技術學習筆記之Hadoop框架基礎1-Hadoop介紹及偽分散式部署
阿新 • • 發佈:2018-12-07
一、學習建議
-》學習思想
-》設計思想:分散式
-》資料採集
-》資料儲存
-》資料計算
-》資料視覺化
-》學習階段
-》瞭解功能簡單使用 -》java、java變數
-》安裝部署配置環境 -》開發
-》熟練的使用,瞭解基本原理 -》java集合、執行緒、java web
-》深入瞭解架構、設計思想、效能調優 -》堆、棧、JVM,記憶體優化,架構設計
-》方法:
-》掌握hadoop設計思想
-》安裝部署、簡單使用:大部分框架都是類似
-》熟練使用:多練習
-》積累經驗:記錄所有的出錯
-》多練習、多總結、理解架構
-》收集報錯
-》出現問題
-》分析日誌
warning:一般錯誤很少
error:
classnotfound
-》名稱
-》檢查環境變數
-》百度
-》溝通解決
-》更加理解原理和架構
二、大資料
-》核心:用大資料處理工具對資料進行分析處理,得到價值
-》特點:
-》資料量大的
-》資料量增長快
-》多樣的
-》價值密度低的
-》真實的
-》hadoop誕生:hadoop1.x
-》HDFS:hadoop distribute file system ,分散式檔案系統
-》MapReduce:分散式計算模型
三、Hadoop的介紹
-》hadoop是幹嘛的?
-》大資料儲存及處理工具
-》hadoop的元件及其功能?
-》hadoop1.x
-》hdfs
-》MapReduce
-》hadoop2.x
-》HDFS:分散式檔案儲存系統
-》MapReduce v2 : 分散式計算模型
-》YARN:分散式資源管理系統,負責任務排程和叢集資源管理
-》計算機資源:CPU、記憶體、磁碟、網路
-》hadoop3.x
-》分散式叢集
-》單機:一臺機器,物理資源有限
-》分散式:多臺機器,物理資源可以動態擴充套件
-》hadoop處理資料的過程
-》將資料存入hdfs
-》開發MapReduce程式
-》從hdfs中讀取資料
-》處理資料
-》將處理後的結果寫入hdfs
-》將開發好的程式打包成jar包
-》將jar包提交給yarn
-》yarn接收任務執行請求
-》yarn為該任務分配資源
-》執行MapReduce程式
-》input
-》map task
-》reduce task
-》output
-》HDFS:hadoop distribute file system,分散式檔案系統
-》與傳統檔案系統相比,有什麼特點?
-》分散式:解決大資料儲存問題
-》分片機制:將一個檔案按照大小自動拆分成多個檔案
預設大小:128M/個 1G=8個block 1000M=8個block
-》副本機制:對每個塊做備份,預設每個塊有3份
機器1 block1-1 block2-3
機器2 block1-2 block2-2
機器3 block2-1 block1-3
檔案:250M -> block1:128M block2:122M
-》如何自動的實現檔案的切分、檔案的合併
-》NameNode:老大,整個hdfs叢集中的老大,負責管理
-》負責接收所有使用者的請求
-》讀
-》寫:負責維護元資料(儲存檔案的資訊:檔案的塊、儲存位置)
-》使用者向NameNode傳送寫的請求
-》NameNode返回檔案寫入的地址
-》使用者將資料提交給DataNode
-》DataNode將資料寫入,並且建立副本
-》寫入成功後將結果反饋給NameNode
-》DataNode:小弟,整個hdfs叢集中可以有很多小弟,負責儲存
-》YARN:分散式任務排程和資源管理工具
-》yarn接收使用者提交的任務請求:jar
-》ResourceManager:老大,負責管理,接收使用者的請求
-》負責資源管理和任務排程
-》NodeManager:小弟,負責計算
-》執行MapReduce程式
-》RM接收到使用者的請求
-》RM會隨機選擇一臺NM作為該任務的分配節點
-》NM向RM申請資源,RM會分配一定的資源打包給NM
-》NM會在其他的NM,啟動多個map和reduce task任務
-》負責的NM會收集執行的結果,彙報給RM
-》MapReduce:分散式計算模型
-》input:負責資料的輸入,預設是hdfs
-》map:將一個大的任務分解成多個小的任務交給每臺機器去執行
-》shuffle:溢寫、分割槽、排序、分組~~~~~~~~~~~~
-》reduce:將所有map的結果進行合併
-》output:輸出,預設是hdfs
四、Hadoop的安裝部署
-》hadoop版本
-》Apache:釋出更新都比較快
-》Cloudera:最穩定,修復了bug、相容性
-》Hortonworks
-》mapr
-》Apache:
-》hadoop版本:
-》2.5.x-2.7.x
-》hadoop模式
-》本地模式:一般用於測試程式執行
-》預設讀本地檔案系統
-》只有task程式執行在jvm中
-》偽分散式:單節點的分散式,所有的程序都在一臺機器上
-》老大和小弟都在一臺機器上
-》完全分散式:工作企業環境
-》老大一般有一臺
-》小弟有很多臺
-》搭建偽分散式環境
-》Linux環境
-》網路:固定ip地址、DNS、網路能通外網、本地域名解析(每臺機器的檔案中包含所有機器的地址和主機名)
-》關閉防火牆和selinux
service iptables stop
chkconfig iptables off
vim /etc/selinux/config
SELINUX=disabled
-》普通使用者:專門負責管理大資料應用:rdedu
修改連線為rdedu自動連線
-》ntp時間同步(完全分散式)
-》ssh免金鑰登入(完全分散式)
-》建立大資料相關的資料夾
sudo mkdir /opt/tools
sudo mkdir /opt/modules
sudo mkdir /opt/datas
sudo chown -R rdedu:rdedu /opt/datas
sudo chown -R rdedu:rdedu /opt/modules/
sudo chown -R rdedu:rdedu /opt/tools/
-》安裝jdk
-》檢查自帶jdk是否已經解除安裝
rpm -qa | grep java
-》解壓
tar -zxvf jdk-8u91-linux-x64.tar.gz -C /opt/modules/
-》配置環境變數
-》全域性環境變數:sudo vim /etc/profile
export JAVA_HOME=/opt/modules/jdk1.8.0_91
export PATH=$PATH:$JAVA_HOME/bin
-》重新載入配置檔案
source /etc/profile
-》檢測
java -version
-》安裝hadoop
-》下載解壓:http://archive.apache.org/dist/
tar -zxvf /opt/tools/hadoop-2.7.3.tar.gz -C /opt/modules/
-》目錄結構
bin:命令
etc/conf/config/:配置檔案
lib:依賴jar包
data/tmp:臨時資料儲存目錄
logs:日誌檔案目錄
sbin:啟動指令碼,管理類的命令
-》修改配置檔案
-》修改env檔案:用於配置環境變數
hadoop-env.sh
mapred-env.sh
yarn-env.sh
export JAVA_HOME=/opt/modules/jdk1.8.0_91
-》修改xml檔案:
core-site.xml hadoop網路、hdfs入口等配置
-》配置hdfs的入口
-》配置hadoop的臨時儲存目錄記得修改許可權為rdedu
mkdir datas
/opt/modules/hadoop-2.7.3/datas
<!-- 用於設定hdfs的入口 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata-training01.erongda.com:8020</value>
</property>
<!-- 設定hadoop的臨時儲存目錄-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-2.7.3/datas</value>
</property>
hdfs-site.xml hdfs相關的配置
<!--用於設定hdfs的副本數-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
slaves 配置從節點(小弟)
nodemanager與DataNode都在同一臺機器
mapred-site.xml MapReduce相關的配置
yarn-site.xml YARN相關配置
-》格式化檔案系統
bin/hdfs namenode -format
-》啟動hdfs
-》啟動老大:NameNode
sbin/hadoop-daemon.sh start namenode
-》啟動小弟:DataNode
sbin/hadoop-daemon.sh start datanode
-》測試檢視
-》檢視網頁埠
192.168.134.188:50070
-》測試
bin/hdfs dfs -mkdir -p /test01
bin/hdfs dfs -put /opt/datas/wordcount.txt /test01/
bin/hdfs dfs -get /test01/wordcount.txt /home/rdedu/
bin/hdfs dfs -cat /test01/wordcount.txt
bin/hdfs dfs -ls /
bin/hdfs dfs -rm -r /test01
-》配置yarn和mapreduce
-》配置MapReduce:mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
<!--指定mapreduce執行在yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
-》配置yarn:yarn-site.xml
<!--指定resourcemanager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata-training01.erongda.com</value>
</property>
<!--MapReduce執行方式,包含shuffle過程-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
-》啟動yarn
-》啟動
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
-》測試執行
-》網頁埠:
192.168.134.188:8088
-》提交執行MapReduce程式
wordcount程式:
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /test01/wordcount.txt /wc-out/wc-out1
-》NameNode原理:管理元資料(記憶體)
-》第一次使用NameNode之前需要格式化
-》初始化元資料
-》初始化資料目錄:hadoop.tmp.dir
-》啟動時:
-》將本地元資料檔案fsimage載入到記憶體中
-》啟動DataNode,DataNode會向NameNode註冊
-》DataNode註冊成功,向老大彙報自己的block資訊
-》客戶端對hdfs進行讀寫
-》secondery NameNode 會根據條件將hdfs的修改日誌edits與fsimage合併,生成新的faimage儲存到本地
五、常見的HDFS配置
-》secondery NameNode
dfs.namenode.secondary.http-address
-》資料儲存目錄
-》元資料目錄
dfs.namenode.name.dir
-》資料檔案目錄
dfs.datanode.data.dir
-》hdfs地址:fs.defaultFS
-》副本數:dfs.replication
-》塊大小:dfs.blocksize
-》訪問許可權:dfs.permissions.enabled
<!--用於關閉hdfs的許可權檢查-->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
-》一旦修改了配置檔案,只有重啟叢集才會生效
-》core-site
-》重啟hdfs,yarn
-》hdfs-site
-》重啟hdfs
-》mapred-site/yarn-site
-》重啟yarn
-》學習思想
-》設計思想:分散式
-》資料採集
-》資料儲存
-》資料計算
-》資料視覺化
-》學習階段
-》瞭解功能簡單使用 -》java、java變數
-》安裝部署配置環境 -》開發
-》熟練的使用,瞭解基本原理 -》java集合、執行緒、java web
-》深入瞭解架構、設計思想、效能調優 -》堆、棧、JVM,記憶體優化,架構設計
-》方法:
-》掌握hadoop設計思想
-》安裝部署、簡單使用:大部分框架都是類似
-》熟練使用:多練習
-》積累經驗:記錄所有的出錯
-》多練習、多總結、理解架構
-》收集報錯
-》出現問題
-》分析日誌
warning:一般錯誤很少
error:
classnotfound
-》名稱
-》檢查環境變數
-》百度
-》溝通解決
-》更加理解原理和架構
二、大資料
-》核心:用大資料處理工具對資料進行分析處理,得到價值
-》特點:
-》資料量大的
-》資料量增長快
-》多樣的
-》價值密度低的
-》真實的
-》hadoop誕生:hadoop1.x
-》HDFS:hadoop distribute file system ,分散式檔案系統
-》MapReduce:分散式計算模型
三、Hadoop的介紹
-》hadoop是幹嘛的?
-》大資料儲存及處理工具
-》hadoop的元件及其功能?
-》hadoop1.x
-》hdfs
-》MapReduce
-》hadoop2.x
-》HDFS:分散式檔案儲存系統
-》MapReduce v2 : 分散式計算模型
-》YARN:分散式資源管理系統,負責任務排程和叢集資源管理
-》計算機資源:CPU、記憶體、磁碟、網路
-》hadoop3.x
-》分散式叢集
-》單機:一臺機器,物理資源有限
-》分散式:多臺機器,物理資源可以動態擴充套件
-》hadoop處理資料的過程
-》將資料存入hdfs
-》開發MapReduce程式
-》從hdfs中讀取資料
-》處理資料
-》將處理後的結果寫入hdfs
-》將開發好的程式打包成jar包
-》將jar包提交給yarn
-》yarn接收任務執行請求
-》yarn為該任務分配資源
-》執行MapReduce程式
-》input
-》map task
-》reduce task
-》output
-》HDFS:hadoop distribute file system,分散式檔案系統
-》與傳統檔案系統相比,有什麼特點?
-》分散式:解決大資料儲存問題
-》分片機制:將一個檔案按照大小自動拆分成多個檔案
預設大小:128M/個 1G=8個block 1000M=8個block
-》副本機制:對每個塊做備份,預設每個塊有3份
機器1 block1-1 block2-3
機器2 block1-2 block2-2
機器3 block2-1 block1-3
檔案:250M -> block1:128M block2:122M
-》如何自動的實現檔案的切分、檔案的合併
-》NameNode:老大,整個hdfs叢集中的老大,負責管理
-》負責接收所有使用者的請求
-》讀
-》寫:負責維護元資料(儲存檔案的資訊:檔案的塊、儲存位置)
-》使用者向NameNode傳送寫的請求
-》NameNode返回檔案寫入的地址
-》使用者將資料提交給DataNode
-》DataNode將資料寫入,並且建立副本
-》寫入成功後將結果反饋給NameNode
-》DataNode:小弟,整個hdfs叢集中可以有很多小弟,負責儲存
-》YARN:分散式任務排程和資源管理工具
-》yarn接收使用者提交的任務請求:jar
-》ResourceManager:老大,負責管理,接收使用者的請求
-》負責資源管理和任務排程
-》NodeManager:小弟,負責計算
-》執行MapReduce程式
-》RM接收到使用者的請求
-》RM會隨機選擇一臺NM作為該任務的分配節點
-》NM向RM申請資源,RM會分配一定的資源打包給NM
-》NM會在其他的NM,啟動多個map和reduce task任務
-》負責的NM會收集執行的結果,彙報給RM
-》MapReduce:分散式計算模型
-》input:負責資料的輸入,預設是hdfs
-》map:將一個大的任務分解成多個小的任務交給每臺機器去執行
-》shuffle:溢寫、分割槽、排序、分組~~~~~~~~~~~~
-》reduce:將所有map的結果進行合併
-》output:輸出,預設是hdfs
四、Hadoop的安裝部署
-》hadoop版本
-》Apache:釋出更新都比較快
-》Cloudera:最穩定,修復了bug、相容性
-》Hortonworks
-》mapr
-》Apache:
-》hadoop版本:
-》2.5.x-2.7.x
-》hadoop模式
-》本地模式:一般用於測試程式執行
-》預設讀本地檔案系統
-》只有task程式執行在jvm中
-》偽分散式:單節點的分散式,所有的程序都在一臺機器上
-》老大和小弟都在一臺機器上
-》完全分散式:工作企業環境
-》老大一般有一臺
-》小弟有很多臺
-》搭建偽分散式環境
-》Linux環境
-》網路:固定ip地址、DNS、網路能通外網、本地域名解析(每臺機器的檔案中包含所有機器的地址和主機名)
-》關閉防火牆和selinux
service iptables stop
chkconfig iptables off
vim /etc/selinux/config
SELINUX=disabled
-》普通使用者:專門負責管理大資料應用:rdedu
修改連線為rdedu自動連線
-》ntp時間同步(完全分散式)
-》ssh免金鑰登入(完全分散式)
-》建立大資料相關的資料夾
sudo mkdir /opt/tools
sudo mkdir /opt/modules
sudo mkdir /opt/datas
sudo chown -R rdedu:rdedu /opt/datas
sudo chown -R rdedu:rdedu /opt/modules/
sudo chown -R rdedu:rdedu /opt/tools/
-》安裝jdk
-》檢查自帶jdk是否已經解除安裝
rpm -qa | grep java
-》解壓
tar -zxvf jdk-8u91-linux-x64.tar.gz -C /opt/modules/
-》配置環境變數
-》全域性環境變數:sudo vim /etc/profile
export JAVA_HOME=/opt/modules/jdk1.8.0_91
export PATH=$PATH:$JAVA_HOME/bin
-》重新載入配置檔案
source /etc/profile
-》檢測
java -version
-》安裝hadoop
-》下載解壓:http://archive.apache.org/dist/
tar -zxvf /opt/tools/hadoop-2.7.3.tar.gz -C /opt/modules/
-》目錄結構
bin:命令
etc/conf/config/:配置檔案
lib:依賴jar包
data/tmp:臨時資料儲存目錄
logs:日誌檔案目錄
sbin:啟動指令碼,管理類的命令
-》修改配置檔案
-》修改env檔案:用於配置環境變數
hadoop-env.sh
mapred-env.sh
yarn-env.sh
export JAVA_HOME=/opt/modules/jdk1.8.0_91
-》修改xml檔案:
core-site.xml hadoop網路、hdfs入口等配置
-》配置hdfs的入口
-》配置hadoop的臨時儲存目錄記得修改許可權為rdedu
mkdir datas
/opt/modules/hadoop-2.7.3/datas
<!-- 用於設定hdfs的入口 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata-training01.erongda.com:8020</value>
</property>
<!-- 設定hadoop的臨時儲存目錄-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-2.7.3/datas</value>
</property>
hdfs-site.xml hdfs相關的配置
<!--用於設定hdfs的副本數-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
slaves 配置從節點(小弟)
nodemanager與DataNode都在同一臺機器
mapred-site.xml MapReduce相關的配置
yarn-site.xml YARN相關配置
-》格式化檔案系統
bin/hdfs namenode -format
-》啟動hdfs
-》啟動老大:NameNode
sbin/hadoop-daemon.sh start namenode
-》啟動小弟:DataNode
sbin/hadoop-daemon.sh start datanode
-》測試檢視
-》檢視網頁埠
192.168.134.188:50070
-》測試
bin/hdfs dfs -mkdir -p /test01
bin/hdfs dfs -put /opt/datas/wordcount.txt /test01/
bin/hdfs dfs -get /test01/wordcount.txt /home/rdedu/
bin/hdfs dfs -cat /test01/wordcount.txt
bin/hdfs dfs -ls /
bin/hdfs dfs -rm -r /test01
-》配置yarn和mapreduce
-》配置MapReduce:mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
<!--指定mapreduce執行在yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
-》配置yarn:yarn-site.xml
<!--指定resourcemanager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata-training01.erongda.com</value>
</property>
<!--MapReduce執行方式,包含shuffle過程-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
-》啟動yarn
-》啟動
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
-》測試執行
-》網頁埠:
192.168.134.188:8088
-》提交執行MapReduce程式
wordcount程式:
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /test01/wordcount.txt /wc-out/wc-out1
-》NameNode原理:管理元資料(記憶體)
-》第一次使用NameNode之前需要格式化
-》初始化元資料
-》初始化資料目錄:hadoop.tmp.dir
-》啟動時:
-》將本地元資料檔案fsimage載入到記憶體中
-》啟動DataNode,DataNode會向NameNode註冊
-》DataNode註冊成功,向老大彙報自己的block資訊
-》客戶端對hdfs進行讀寫
-》secondery NameNode 會根據條件將hdfs的修改日誌edits與fsimage合併,生成新的faimage儲存到本地
五、常見的HDFS配置
-》secondery NameNode
dfs.namenode.secondary.http-address
-》資料儲存目錄
-》元資料目錄
dfs.namenode.name.dir
-》資料檔案目錄
dfs.datanode.data.dir
-》hdfs地址:fs.defaultFS
-》副本數:dfs.replication
-》塊大小:dfs.blocksize
-》訪問許可權:dfs.permissions.enabled
<!--用於關閉hdfs的許可權檢查-->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
-》一旦修改了配置檔案,只有重啟叢集才會生效
-》core-site
-》重啟hdfs,yarn
-》hdfs-site
-》重啟hdfs
-》mapred-site/yarn-site
-》重啟yarn