【小白视角】大数据基础实践(二)Hadoop环境搭建与测试
Hadoop環境的搭建與測試
- 1.簡介
- 實驗環境
- 1.1基礎知識
- 1.2 特點
- 1.3 生態系統
- 1.3.1 HDFS
- 1.3.2 YARN
- 1.3.3 MapReduce
- 1.3.4 Zookeeper
- 1.3.5 HBase
- 1.3.6 Hive
- 1.3.7 Pig
- 1.3.8 Mahout
- 1.3.9 Sqoop
- 1.3.10 Flume
- 2. Hadoop 安裝于環境配置
- 2.1 解壓Hadoop壓縮包
- 2.2 Hadoop環境變量配置
- 3. 單機模式
- 3.1 特點
- 3.2 配置
- 3.3 執行例子
- 4. 偽分布模式
- 4.1 特點
- 4.2 SSH 免密登陸
- 4.3 修改Hadoop配置文件
- 4.4 初始化
- 4.3 執行
- 5. 全分布模式
- 5.1 特點
- 5.2 集群準備
- 5.3 網絡配置
- 5.4ssh免密登陸
- 5.5 Hadoop 環境配置
- 5.6測試實例
- 總結
1.簡介
實驗環境
- Vmware (Ubuntu18.04)
- Java 1.8
- Hadoop 3.1.3
1.1基礎知識
- Hadoop是一個由Apache基金會所開發的開源分布式計算平臺,為了讓用戶可以在不了解分布式底層細節的情況下開發分布式程序。
- Hadoop是一個基礎架構系統,是Google的云計算基礎架構的開源實現,主要由HDFS、MapReduce組成,其中HDFS是Google的GFS的開源實現,MapReduce是Google的MapReduce的開源實現。HDFS為海量的數據提供了存儲,MapReduce為海量的數據提供了計算。
- Hadoop是基于Java語言開發的,具有很好的跨平臺特性,并且可以部署在廉價的計算機集群中。
- 簡單來說,Hadoop是一個可以更容易開發和運行處理大規模數據的軟件平臺,充分利用集群的威力進行高速運算和存儲。
1.2 特點
Hadoop是一個能夠對大量數據進行分布式處理的軟件框架,并且是以一種可靠、高效、可伸縮的方式進行處理的,它具有以下幾個方面的特性
1.3 生態系統
1.3.1 HDFS
一款分布式文件系統,來源于2003年10月Google發表的GFS論文,是Hadoop體系中數據存儲管理的基礎,兩大核心之一。HDFS具有高容錯性,在設計上HDFS把硬件故障當成常態來考慮,所以它能檢測到出現故障的硬件,并加以解決,不僅體現它的可靠性。HDFS通過流式數據訪問,提供高吞吐量應用程序數據訪問功能,適合帶有大型數據集的應用程序。
1.3.2 YARN
YARN是為在現有的和新的Hadoop集群上工作而設計的資源調度器。從Apache Hadoop2.0版本開始,YARN不但為已有的MapReduce應用提供了全面的兼容,也致力于支持幾乎所有的分布式應用,實現了在Hadoop框架上運行其他非MapReduce作業
1.3.3 MapReduce
一種計算模型,來源于2004年12月Google發表的一篇關于MapReduce的論文,可用于海量數據的計算。其中,Map函數對數據集上的獨立元素進行指定的操作,生成Key-Value對形式的中間結果。Reduce函數則對Map函數得到的所有Key-Value對中相同Key的所有Value進行規約來得到最后的結果,簡單地說,就是“分而治之”。MapReduce適用于大量計算機組成的分布式并行環境。
1.3.4 Zookeeper
一種分布式的、可用性高的協調服務,來源于2006年11月Google發表的Chubby論文。Zookeeper提供分布式鎖之類的基本服務用于構建分布式應用。
1.3.5 HBase
一種分布式的、按列存儲的數據庫,來源于2006年11月Google發表的Bigtable論文。HBase采用了BigTable的數據模型:增強的稀疏排序映射表(key/value),其中鍵由行關鍵字、列關鍵字和時間戳構成。HBase使用HDFS作為底層存儲,同時支持MapReduce的批量試計算和點查詢(隨機讀取),它將數據存儲和并行計算完美地結合在一起。
1.3.6 Hive
Hive由Facebook開源,最初用于解決海量結構化的日志數據統計問題,一種分布式的、按列存儲的數據倉庫。Hive管理HDFS中存儲的數據,并提供基于SQL的查詢語句HQL,將SQL轉化為MapReduce任務在Hadoop上執行,用以查詢數據。
1.3.7 Pig
數據流語言和運行環境,由Yahoo開源,用以探究非常龐大的數據集。Pig運行在MapReduce和HDFS集群上。
1.3.8 Mahout
Mahout最初是Apache Lucent的子項目,隨著它的快速發展,如今已經是Apache的頂級項目。Mahout包含了分類、聚類、推薦引擎(協同過濾)和頻繁集挖掘等廣泛使用的數據挖掘方法。除此之外,Mahout還包含數據的輸入/輸出工具和與其他存儲系統集成等數據挖掘支持架構。
1.3.9 Sqoop
Sqoop是SQL-to-Hadoop的縮寫,該工具用于在結構化數據存儲(如關系型數據庫)和HDFS之間高效批量傳輸數據。數據的導入和導出本質上是MapReduce程序,充分利用了MR的并行化和容錯性。
1.3.10 Flume
Flume是Cloudera開源的日志收集系統,具有分布式、高可靠、高容錯、易于定制和擴展的特點。它將數據從產生到傳輸再到處理以及最后寫入目標路徑的過程抽象為數據流,在具體的數據流中,數據源支持在Flume中定制數據發送方,從而支持收集各種不同協議數據。同時,Flume數據流提供對日志數據進行簡單處理的能力。除此之外,Flume還具有能夠將日志寫入各種數據目標(可定制)的能力??偟膩碚f,Flume是一個可擴展、適合復雜環境的海量日志收集系統。
2. Hadoop 安裝于環境配置
2.1 解壓Hadoop壓縮包
cd 進入 Hadoop 安裝包存放位置,執行 tar 命令將 hadoop-3.1.3.tar.gz 解壓到/usr/local 目錄下,ls 查看是否生成了 hadoop3.1.3 文件夾。
2.2 Hadoop環境變量配置
編輯用戶環境配置文件
cd /usr/local sudo vim ~/.bashrc配置HADOOP_HOME、PATH環境變量,保存并退出文件
執行命令使環境生效
測試環境是否成功
3. 單機模式
3.1 特點
- 無需運行任何守護進程,所有程序都在同一個JVM上執行,在獨立模式上測試和調試MapReduce程序非常方便,因此該模式比較適合開發階段。
- Hadoop 的默認模式為單機模式(本地模式\非分布式),不需要進行其它配置即可運行。Hadoop 附帶了豐富的例子,包括 workcount、grep、join 等,下面運行 grep 例子來感受 Hadoop運行。
3.2 配置
用戶主目錄中新建 input 文件夾存放輸入數據文件:
拷貝 Hadoop 安裝目錄下/etc/hadoop 中所有的 XML 文件到 input 文件夾中:
3.3 執行例子
**注意:**Hadoop 默認不會覆蓋結果文件,因此再次運行上面實例會提示出錯,需要先將output 刪除。查看當前目錄下的文件,多出了 output 文件夾,cat 命令查看結果打印到屏幕上。
4. 偽分布模式
4.1 特點
- Hadoop守護進程運行在本地機器上,模擬一個小規模的集群,該模式下的Hadoop集群實現的并不是真正的集群狀態。
- Hadoop 偽分布式配置是在沒有多臺計算機節點的情況下,對 Hadoop 的分布式存儲和計算進行模擬安裝和配置。
4.2 SSH 免密登陸
這個在第一篇已經寫了如何進行ssh免密登陸,這里就不多說了。
鏈接在這 搭建Hadoop集群
4.3 修改Hadoop配置文件
Hadoop 的配置文件位于安裝目錄的/etc/hadoop/下,偽分布式模式配置需要修改配置文件 core-site.xml 和 hdfs-site.xml。
core-site.xml 配置文件
hdfs-site.xml配置文件
4.4 初始化
hdfs namenode -format
找到Successfully就可以了
先對配置文件進行配置,一開始以為localhost改成031904102_master導致失敗,一直start不起來,后來才改成了localhost,localhost是對應127.0.0.1,是本機的localhost,而031904102_master對應的是192.168.1.200,對不上,所有后面連不上。
start-dfs.sh
執行命令 jps 驗證是否成功啟動,成功啟動應包含如下進程。如果沒有啟動成功,可以通過啟動日志排查原因,日志位于安裝目錄的 logs 文件夾下后綴為.log。(根據錯誤信息具體問題要具體分析。確認配置文件沒有錯誤,一般可以嘗試關閉 stop-dfs.sh 后再啟動 start-dfs.sh;或者可以嘗試刪除安裝目錄下整個 tmp 文件,重新執行 namenode –format。)
4.3 執行
查看hadoop是否創建成功文件
hdfs dfs -ls /user/hadoophdfs dfs -put 原路徑 目的路徑
查看是否存在input中
hdfs dfs -ls /user/hadoop/input在分布式文件系統上查看結果
hdfs dfs -cat output/*5. 全分布模式
注意 :更改主機名稱之后,要重新配置ssh密鑰!!!!
注意主機名不要有 _ 要用-代替!!!!!
不要111111_xxxx 要11111-xxx 不然報錯!我就是這樣!下面這些例子時我修改前的,沒成功,但是步驟是一樣的,后來改回來之后重新做了一遍,忘記截圖了。
5.1 特點
與偽分布模式的區別在于其守護進程運行在一個集群上,通常采用全分布模式來整合集群環境下的所有資源。
5.2 集群準備
作為從節點 Slave;
以上內容在第一篇的時候已經說好了!Slave,就是克隆
注意:如果節點是直接克隆配置好偽分布式模式的虛擬機,需要刪除 hadoop目錄下的 tmp 文件夾和 logs 文件夾,或者刪除原有 Hadoop 安裝路徑下的所有文件夾,重新進行解壓和環境配置。
5.3 網絡配置
兩個節點 IP 配置如下,請依據計算機實際情況進行 IP 地址和主機名分配。
主機名 IP 地址
Master 192.168.1.10
Slave 192.168.1.11
沒截圖,按照老師的樣子截了個圖
3. 改/etc/hosts 文件,更改 IP 映射關系,所有節點都要修改。hosts 文件原有映射保留一條 localhost 其余刪除,再插入兩個節點的 IP 地址映射,注意主機名和 IP 地址不要對應錯了,主機名區分大小寫。
重啟之后生效即可
上面這個還是老師的圖,老師是master
下面這個是我的,我的是031904102-Master 注意不要像下面那樣下劃線 “ _ ” !!
檢查master和slave能否ping通
發現都可以即可
5.4ssh免密登陸
這一段第一篇已經講過,再講一次吧。
更改主機名稱之后,要重新配置ssh密鑰。在本次實驗中借助xftp進行密鑰的傳遞。
左邊是Master 右邊是Slave,將對方的id_rsa.pub發給對方
在xftp上進行密鑰的復制之后,將其中的密鑰cat到authorized_keys中,這和之前的一樣的操作
這樣就可以實現兩臺機子的免密登陸了
5.5 Hadoop 環境配置
然后再依次配置master中hadoop的文件配置
workers
這里是你副節點的主機名稱,我截是截老師的,我自己的是031904102-Slave就多了個學號,按照你自己的來。
core-site.xml
這也是老師的圖,我這里是031904102-Master
hdfs-site.xml
mapred-site.xml
yarn-site.xml
hdfs name node -format
初始化一下就可以了。
配置其余節點,使所有節點 Hadoop 配置保持一致。刪除之前運行偽分布式生成的
log 文件和 tmp 文件夾,打包 Hadoop 遠程發送給其它節點并解壓。如果其它節點已安裝有
Hadoop 也可以直接同步修改配置文件。
Master節點的操作
刪除
打包
cd /usr/local tar -zcf ~/hadoop_m.tar.gz ./hadoop-3.1.3 scp ~/hadoop_m.tar.gz Slave:/home/hadoop于是上網就有說上傳到tmp目錄中。就可以了
這里Slave是你上面配置的Slave 我自己的是031904102-Slave
Slave的操作
5.6測試實例
一定要是- !不能是下劃線_
在hadoop上創建文件
和上面偽分布一樣
有文件之后
執行grep操作
cat一下結果
再次測試時,記得把輸出結果刪除
總結
hadoop的三種模式已經介紹一一配置了!
有什么問題評論區留言或是私信我吧!
我是大數據專業的,喜歡大數據的可以關注我!
總結
以上是生活随笔為你收集整理的【小白视角】大数据基础实践(二)Hadoop环境搭建与测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: strace调试(Linux Devic
- 下一篇: 工程师实战:单片机裸机程序框架是怎样炼成