基於docker快速搭建多節點Hadoop集群


一、概述

hadoop是什么

Hadoop被公認是一套行業大數據標准開源軟件,在分布式環境下提供了海量數據的處理能力。幾乎所有主流廠商都圍繞Hadoop開發工具、開源軟件、商業化工具和技術服務。今年大型IT公司,如EMC、Microsoft、Intel、Teradata、Cisco都明顯增加了Hadoop方面的投入。

hadoop能干什么

hadoop擅長日志分析,facebook就用Hive來進行日志分析,2009年時facebook就有非編程人員的30%的人使用HiveQL進行數據分析;淘寶搜索中的自定義篩選也使用的Hive;利用Pig還可以做高級的數據處理,包括Twitter、LinkedIn 上用於發現您可能認識的人,可以實現類似Amazon.com的協同過濾的推薦效果。淘寶的商品推薦也是!在Yahoo!的40%的Hadoop作業是用pig運行的,包括垃圾郵件的識別和過濾,還有用戶特征建模。(2012年8月25新更新,天貓的推薦系統是hive,少量嘗試mahout!)

 

hadoop的核心

1.HDFS: Hadoop Distributed File System  分布式文件系統

2.YARN: Yet Another Resource Negotiator   資源管理調度系統

3.Mapreduce:分布式運算框架

 

HDFS的架構

主從結構

       •主節點, namenode

        •從節點,有很多個: datanode

namenode負責:

         •接收用戶操作請求

         •維護文件系統的目錄結構

         •管理文件與block之間關系,block與datanode之間關系

datanode負責:

         •存儲文件

         •文件被分成block存儲在磁盤上

         •為保證數據安全,文件會有多個副本

 

Secondary NameNode負責:

           合並fsimage和edits文件來更新NameNode的metedata

二、docker部署

環境說明

操作系統 docker版本 ip地址 配置
centos 7.6 19.03.12 192.168.31.229 4核8g

 

 

 

 

拉取鏡像

這里采用dockerhub現有,鏡像大小為:777MB

docker pull kiwenlau/hadoop-master:0.1.0

 

運行容器

下載源代碼

cd /opt/
git clone https://github.com/kiwenlau/hadoop-cluster-docker

 

創建網橋

docker network create hadoop

 

運行容器

cd /opt/hadoop-cluster-docker/
./start-container.sh

運行結果:

start master container...
start slave1 container...
start slave2 container...

 

一共開啟了3個容器,1個master, 2個slave。開啟容器后就進入了master容器root用戶的根目錄(/root)。

 

查看master的root用戶家目錄的文件:

root@hadoop-master:~# ls
hdfs  input  run-wordcount.sh  start-hadoop.sh

start-hadoop.sh是開啟hadoop的shell腳本,

run-wordcount.sh是運行wordcount的shell腳本,可以測試鏡像是否正常工作。

 

開啟hadoop

bash start-hadoop.sh

 注意:這一步會ssh連接到每一個節點,確保ssh信任是正常的。

Hadoop的啟動速度取決於機器性能

 

運行wordcount

bash run-wordcount.sh

此腳本會連接到fdfs,並生成幾個測試文件。

 

運行結果:

...
input file1.txt:
Hello Hadoop

input file2.txt:
Hello Docker

wordcount output:
Docker  1
Hadoop  1
Hello   2

wordcount的執行速度取決於機器性能

 

三、配置文件說明

進入hadoop-master容器,hadoop的配置文件目錄為:/usr/local/hadoop/etc/hadoop

core-site.xml

<?xml version="1.0"?>
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop-master:9000/</value>
    </property>
</configuration>

 

hdfs-site.xml

<?xml version="1.0"?>
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop-master:9000/</value>
    </property>
</configuration>
root@hadoop-master:/usr/local/hadoop/etc/hadoop# pwd
/usr/local/hadoop/etc/hadoop
root@hadoop-master:/usr/local/hadoop/etc/hadoop# cat hdfs-site.xml 
<?xml version="1.0"?>
<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///root/hdfs/namenode</value>
        <description>NameNode directory for namespace and transaction logs storage.</description>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///root/hdfs/datanode</value>
        <description>DataNode directory</description>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
</configuration>

注意:這里是配置一個Master節點和兩個Slave節點。所以dfs.replication配置為2。
dfs.namenode.name.dir和dfs.datanode.data.dir分別配置為NameNode和DataNode的目錄路徑

 

mapred-site.xml

<?xml version="1.0"?>
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

指定運行mapreduce的環境是yarn

 

hadoop-env.sh

注意:這里必須要指定java的路徑。否則啟動Hadoop時,提示找不到變量JAVA_HOME

# The java implementation to use.
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

 

四、測試Hadoop

hadoop管理頁面

http://ip地址:8088/cluster/nodes

效果如下:

 

 

hdfs 管理頁面

http://ip地址:50070/

點擊datanode,效果如下:

 

 

瀏覽文件系統

 

默認有2個文件夾,這里面的文件是看不到的。

 

 

 

由於默認開啟了安全默認,默認是沒有權限查看文件的。需要關閉安全模式才行!

關閉安全模式

進入hadoop-master容器,執行命令:

hadoop dfsadmin -safemode leave

 

授權tmp文件權限

hdfs dfs -chmod -R 755 /tmp

 

刷新頁面,點擊tmp

 

 

返回上一級目錄,進入/user/root/input,就可以看到腳本創建的2個文件了!

 

 

注意:hdfs存放目錄為:/root/hdfs。如果需要做持久化,將此目錄映射出來即可!

 

 

本文參考鏈接:

http://dockone.io/article/395

https://blog.csdn.net/sb985/article/details/82722451

https://blog.csdn.net/gwd1154978352/article/details/81095592

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM