色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何將Hadoop部署在低廉的硬件上

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 作者:馬哥Linux運維 ? 2022-09-27 09:40 ? 次閱讀

一、概述

Hadoop 是 Apache 軟件基金會下一個開源分布式計算平臺,以 HDFS(Hadoop Distributed File System)、MapReduce(Hadoop2.0 加入了 YARN,Yarn 是資源調度框架,能夠細粒度的管理和調度任務,還能夠支持其他的計算框架,比如 spark)為核心的 Hadoop 為用戶提供了系統底層細節透明的分布式基礎架構。hdfs 的高容錯性、高伸縮性、高效性等優點讓用戶可以將 Hadoop 部署在低廉的硬件上,形成分布式系統。

a0425924-3daf-11ed-9e49-dac502259ad0.pngHDFS a07397b4-3daf-11ed-9e49-dac502259ad0.pngYARN

二、開始部署

1)添加源

地址:

https://artifacthub.io/packages/helm/apache-hadoop-helm/hadoop

helmrepoaddapache-hadoop-helmhttps://pfisterer.github.io/apache-hadoop-helm/
helmpullapache-hadoop-helm/hadoop--version1.2.0
tar-xfhadoop-1.2.0.tgz

2)構建鏡像 Dockerfile

FROMmyharbor.com/bigdata/centos:7.9.2009

RUNrm-f/etc/localtime&&ln-sv/usr/share/zoneinfo/Asia/Shanghai/etc/localtime&&echo"Asia/Shanghai">/etc/timezone

RUNexportLANG=zh_CN.UTF-8

#創建用戶和用戶組,跟yaml編排里的spec.template.spec.containers.securityContext.runAsUser:9999
RUNgroupadd--system--gid=9999admin&&useradd--system--home-dir/home/admin--uid=9999--gid=adminadmin

#安裝sudo
RUNyum-yinstallsudo;chmod640/etc/sudoers

#給admin添加sudo權限
RUNecho"adminALL=(ALL)NOPASSWD:ALL">>/etc/sudoers

RUNyum-yinstallinstallnet-toolstelnetwget

RUNmkdir/opt/apache/

ADDjdk-8u212-linux-x64.tar.gz/opt/apache/

ENVJAVA_HOME=/opt/apache/jdk1.8.0_212
ENVPATH=$JAVA_HOME/bin:$PATH

ENVHADOOP_VERSION3.3.2
ENVHADOOP_HOME=/opt/apache/hadoop

ENVHADOOP_COMMON_HOME=${HADOOP_HOME}
HADOOP_HDFS_HOME=${HADOOP_HOME}
HADOOP_MAPRED_HOME=${HADOOP_HOME}
HADOOP_YARN_HOME=${HADOOP_HOME}
HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
PATH=${PATH}:${HADOOP_HOME}/bin

#RUNcurl--silent--output/tmp/hadoop.tgzhttps://ftp-stud.hs-esslingen.de/pub/Mirrors/ftp.apache.org/dist/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz&&tar--directory/opt/apache-xzf/tmp/hadoop.tgz&&rm/tmp/hadoop.tgz
ADDhadoop-${HADOOP_VERSION}.tar.gz/opt/apache
RUNln-s/opt/apache/hadoop-${HADOOP_VERSION}${HADOOP_HOME}

RUNchown-Radmin:admin/opt/apache

WORKDIR$HADOOP_HOME

#Hdfsports
EXPOSE500105002050070500755009080209000

#Mapredports
EXPOSE19888

#Yarnports
EXPOSE8030803180328033804080428088

#Otherports
EXPOSE497072122

開始構建鏡像

dockerbuild-tmyharbor.com/bigdata/hadoop:3.3.2.--no-cache

###參數解釋
#-t:指定鏡像名稱
# . :當前目錄Dockerfile
#-f:指定Dockerfile路徑
#--no-cache:不緩存

推送到鏡像倉庫

dockerpushmyharbor.com/bigdata/hadoop:3.3.2

調整目錄結構

mkdirhadoop/templates/hdfshadoop/templates/yarn
mvhadoop/templates/hdfs-*hadoop/templates/hdfs/
mvhadoop/templates/yarn-*hadoop/templates/yarn/

2)修改配置

hadoop/values.yaml

image:
repository:myharbor.com/bigdata/hadoop
tag:3.3.2
pullPolicy:IfNotPresent

...

persistence:
nameNode:
enabled:true
storageClass:"hadoop-nn-local-storage"
accessMode:ReadWriteOnce
size:10Gi
local:
-name:hadoop-nn-0
host:"local-168-182-110"
path:"/opt/bigdata/servers/hadoop/nn/data/data1"

dataNode:
enabled:true
storageClass:"hadoop-dn-local-storage"
accessMode:ReadWriteOnce
size:20Gi
local:
-name:hadoop-dn-0
host:"local-168-182-110"
path:"/opt/bigdata/servers/hadoop/dn/data/data1"
-name:hadoop-dn-1
host:"local-168-182-110"
path:"/opt/bigdata/servers/hadoop/dn/data/data2"
-name:hadoop-dn-2
host:"local-168-182-110"
path:"/opt/bigdata/servers/hadoop/dn/data/data3"
-name:hadoop-dn-3
host:"local-168-182-111"
path:"/opt/bigdata/servers/hadoop/dn/data/data1"
-name:hadoop-dn-4
host:"local-168-182-111"
path:"/opt/bigdata/servers/hadoop/dn/data/data2"
-name:hadoop-dn-5
host:"local-168-182-111"
path:"/opt/bigdata/servers/hadoop/dn/data/data3"
-name:hadoop-dn-6
host:"local-168-182-112"
path:"/opt/bigdata/servers/hadoop/dn/data/data1"
-name:hadoop-dn-7
host:"local-168-182-112"
path:"/opt/bigdata/servers/hadoop/dn/data/data2"
-name:hadoop-dn-8
host:"local-168-182-112"
path:"/opt/bigdata/servers/hadoop/dn/data/data3"

...

service:
nameNode:
type:NodePort
ports:
dfs:9000
webhdfs:9870
nodePorts:
dfs:30900
webhdfs:30870
dataNode:
type:NodePort
ports:
dfs:9000
webhdfs:9864
nodePorts:
dfs:30901
webhdfs:30864
resourceManager:
type:NodePort
ports:
web:8088
nodePorts:
web:30088
...

securityContext:
runAsUser:9999
privileged:true

hadoop/templates/hdfs/hdfs-nn-pv.yaml

{{-range.Values.persistence.nameNode.local}}
---
apiVersion:v1
kind:PersistentVolume
metadata:
name:{{.name}}
labels:
name:{{.name}}
spec:
storageClassName:{{$.Values.persistence.nameNode.storageClass}}
capacity:
storage:{{$.Values.persistence.nameNode.size}}
accessModes:
-ReadWriteOnce
local:
path:{{.path}}
nodeAffinity:
required:
nodeSelectorTerms:
-matchExpressions:
-key:kubernetes.io/hostname
operator:In
values:
-{{.host}}
---
{{-end}}

hadoop/templates/hdfs/hdfs-dn-pv.yaml

{{-range.Values.persistence.dataNode.local}}
---
apiVersion:v1
kind:PersistentVolume
metadata:
name:{{.name}}
labels:
name:{{.name}}
spec:
storageClassName:{{$.Values.persistence.dataNode.storageClass}}
capacity:
storage:{{$.Values.persistence.dataNode.size}}
accessModes:
-ReadWriteOnce
local:
path:{{.path}}
nodeAffinity:
required:
nodeSelectorTerms:
-matchExpressions:
-key:kubernetes.io/hostname
operator:In
values:
-{{.host}}
---
{{-end}}

修改 hdfs service

mvhadoop/templates/hdfs/hdfs-nn-svc.yamlhadoop/templates/hdfs/hdfs-nn-svc-headless.yaml
mvhadoop/templates/hdfs/hdfs-dn-svc.yamlhadoop/templates/hdfs/hdfs-dn-svc-headless.yaml
#注意修改名稱,不要重復

hadoop/templates/hdfs/hdfs-nn-svc.yaml

#AheadlessservicetocreateDNSrecords
apiVersion:v1
kind:Service
metadata:
name:{{include"hadoop.fullname".}}-hdfs-nn
labels:
app.kubernetes.io/name:{{include"hadoop.name".}}
helm.sh/chart:{{include"hadoop.chart".}}
app.kubernetes.io/instance:{{.Release.Name}}
app.kubernetes.io/component:hdfs-nn
spec:
ports:
-name:dfs
port:{{.Values.service.nameNode.ports.dfs}}
protocol:TCP
nodePort:{{.Values.service.nameNode.nodePorts.dfs}}
-name:webhdfs
port:{{.Values.service.nameNode.ports.webhdfs}}
nodePort:{{.Values.service.nameNode.nodePorts.webhdfs}}
type:{{.Values.service.nameNode.type}}
selector:
app.kubernetes.io/name:{{include"hadoop.name".}}
app.kubernetes.io/instance:{{.Release.Name}}
app.kubernetes.io/component:hdfs-nn

hadoop/templates/hdfs/hdfs-dn-svc.yaml

#AheadlessservicetocreateDNSrecords
apiVersion:v1
kind:Service
metadata:
name:{{include"hadoop.fullname".}}-hdfs-dn
labels:
app.kubernetes.io/name:{{include"hadoop.name".}}
helm.sh/chart:{{include"hadoop.chart".}}
app.kubernetes.io/instance:{{.Release.Name}}
app.kubernetes.io/component:hdfs-nn
spec:
ports:
-name:dfs
port:{{.Values.service.dataNode.ports.dfs}}
protocol:TCP
nodePort:{{.Values.service.dataNode.nodePorts.dfs}}
-name:webhdfs
port:{{.Values.service.dataNode.ports.webhdfs}}
nodePort:{{.Values.service.dataNode.nodePorts.webhdfs}}
type:{{.Values.service.dataNode.type}}
selector:
app.kubernetes.io/name:{{include"hadoop.name".}}
app.kubernetes.io/instance:{{.Release.Name}}
app.kubernetes.io/component:hdfs-dn

修改 yarn service

mvhadoop/templates/yarn/yarn-nm-svc.yamlhadoop/templates/yarn/yarn-nm-svc-headless.yaml
mvhadoop/templates/yarn/yarn-rm-svc.yamlhadoop/templates/yarn/yarn-rm-svc-headless.yaml
mvhadoop/templates/yarn/yarn-ui-svc.yamlhadoop/templates/yarn/yarn-rm-svc.yaml
#注意修改名稱,不要重復

hadoop/templates/yarn/yarn-rm-svc.yaml

#Servicetoaccesstheyarnwebui
apiVersion:v1
kind:Service
metadata:
name:{{include"hadoop.fullname".}}-yarn-rm
labels:
app.kubernetes.io/name:{{include"hadoop.name".}}
helm.sh/chart:{{include"hadoop.chart".}}
app.kubernetes.io/instance:{{.Release.Name}}
app.kubernetes.io/component:yarn-rm
spec:
ports:
-port:{{.Values.service.resourceManager.ports.web}}
name:web
nodePort:{{.Values.service.resourceManager.nodePorts.web}}
type:{{.Values.service.resourceManager.type}}
selector:
app.kubernetes.io/name:{{include"hadoop.name".}}
app.kubernetes.io/instance:{{.Release.Name}}
app.kubernetes.io/component:yarn-rm

修改控制器

在所有控制中新增如下內容:

containers:
...
securityContext:
runAsUser:{{.Values.securityContext.runAsUser}}
privileged:{{.Values.securityContext.privileged}}

hadoop/templates/hadoop-configmap.yaml

###1、將/root換成/opt/apache
###2、TMP_URL="http://{{include"hadoop.fullname".}}-yarn-rm-headless:8088/ws/v1/cluster/info"

3)開始安裝

#創建存儲目錄
mkdir-p/opt/bigdata/servers/hadoop/{nn,dn}/data/data{1..3}

helminstallhadoop./hadoop-nhadoop--create-namespace

NOTES

NAME:hadoop
LASTDEPLOYED:SatSep2417552022
NAMESPACE:hadoop
STATUS:deployed
REVISION:1
TESTSUITE:None
NOTES:
1.YoucancheckthestatusofHDFSbyrunningthiscommand:
kubectlexec-nhadoop-ithadoop-hadoop-hdfs-nn-0--/opt/hadoop/bin/hdfsdfsadmin-report

2.Youcanlisttheyarnnodesbyrunningthiscommand:
kubectlexec-nhadoop-ithadoop-hadoop-yarn-rm-0--/opt/hadoop/bin/yarnnode-list

3.Createaport-forwardtotheyarnresourcemanagerUI:
kubectlport-forward-nhadoophadoop-hadoop-yarn-rm-08088:8088

Thenopentheuiinyourbrowser:

openhttp://localhost:8088

4.Youcanrunincludedhadooptestslikethis:
kubectlexec-nhadoop-ithadoop-hadoop-yarn-nm-0--/opt/hadoop/bin/hadoopjar/opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.3.2-tests.jarTestDFSIO-write-nrFiles5-fileSize128MB-resFile/tmp/TestDFSIOwrite.txt

5.Youcanlistthemapreducejobslikethis:
kubectlexec-nhadoop-ithadoop-hadoop-yarn-rm-0--/opt/hadoop/bin/mapredjob-list

6.Thischartcanalsobeusedwiththezeppelinchart
helminstall--namespacehadoop--sethadoop.useConfigMap=true,hadoop.configMapName=hadoop-hadoopstable/zeppelin

7.Youcanscalethenumberofyarnnodeslikethis:
helmupgradehadoop--setyarn.nodeManager.replicas=4stable/hadoop

Makesuretoupdatethevalues.yamlifyouwanttomakethispermanent.

a08eac48-3daf-11ed-9e49-dac502259ad0.png查看

kubectlgetpods,svc-nhadoop-owide
a0bac5bc-3daf-11ed-9e49-dac502259ad0.png

hdfs web:

http://192.168.182.110:30870/

a0f35468-3daf-11ed-9e49-dac502259ad0.png

yarn web:

http://192.168.182.110:30088/

a11c3342-3daf-11ed-9e49-dac502259ad0.png

5)測試驗證

HDFS 測試驗證

kubectlexec-ithadoop-hadoop-hdfs-nn-0-nhadoop--bash
[root@local-168-182-110hadoop]#kubectlexec-ithadoop-hadoop-hdfs-nn-0-nhadoop--bash
bash-4.2$
bash-4.2$
bash-4.2$hdfsdfs-mkdir/tmp
bash-4.2$hdfsdfs-ls/
Found1items
drwxr-xr-x-adminsupergroup02022-09-2417:56/tmp
bash-4.2$echo"testhadoop">test.txt
bash-4.2$hdfsdfs-puttest.txt/tmp/
bash-4.2$hdfsdfs-ls/tmp/
Found1items
-rw-r--r--3adminsupergroup122022-09-2417:57/tmp/test.txt
bash-4.2$hdfsdfs-cat/tmp/
cat:`/tmp':Isadirectory
bash-4.2$hdfsdfs-cat/tmp/test.txt
testhadoop
bash-4.2$

a141d174-3daf-11ed-9e49-dac502259ad0.png
Yarn 的測試驗證等后面講到 hive on k8s 再來測試驗證。

6)卸載

helmuninstallhadoop-nhadoop

kubectldeletepod-nhadoop`kubectlgetpod-nhadoop|awk'NR>1{print$1}'`--force
kubectlpatchnshadoop-p'{"metadata":{"finalizers":null}}'
kubectldeletenshadoop--force

這里也提供 git 下載地址,有需要的小伙伴可以下載部署玩玩:

https://gitee.com/hadoop-bigdata/hadoop-on-k8s

在 k8s 集群中 yarn 會慢慢被弱化,直接使用 k8s 資源調度,而不再使用 yarn 去調度資源了,這里只是部署了單點,僅限于測試環境使用,下一篇文章會講 Hadoop 高可用 on k8s 實現,請小伙伴耐心等待,有任何疑問歡迎給我留言~

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 硬件
    +關注

    關注

    11

    文章

    3380

    瀏覽量

    66388
  • Hadoop
    +關注

    關注

    1

    文章

    90

    瀏覽量

    16011
  • 計算框架
    +關注

    關注

    0

    文章

    4

    瀏覽量

    1944

原文標題:7 張圖入門 Hadoop 在 K8S 環境中部署

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何將弄好的程序燒multisum的芯片呢?

    如何將弄好的程序燒multisum的芯片呢?
    發表于 02-13 15:51

    hadoop無法訪問50070端口解決方案

    Hadoop50070是hdfs的web管理頁面,搭建Hadoop集群環境時,有些大數據開發技術人員會遇到Hadoop 50070端口打不開的情況,引起該問題的原因很多,想要解決這個
    發表于 04-10 16:02

    Hadoop的集群環境部署說明

    步驟,那么多的指令肯定是會覺得很繁瑣的。畢竟都是從菜鳥一步一步過來的,記得當初做hadoop集群環境搭建真的是很煩瑣。目前國內的hadoop商業發行版雖然比較多,但是集群環境的搭建方面基本都很類似
    發表于 10-12 15:51

    hadoop和spark的區別

    學習hadoop已經有很長一段時間了,好像是二三月份的時候朋友給了一個國產Hadoop發行版下載地址,因為還是在學習階段就下載了一個三節點的學習版玩一下。研究、學習hadoop的朋友
    發表于 11-30 15:51

    大數據hadoop入門之hadoop家族產品詳解

    Spark和Strom數據存在內存中 Pig/Hive(Hadoop編程):角色描述Pig是一種高級編程語言,處理半結構化數據擁有非常高的性能,可以幫助我們縮短開發周期。Hive是數據分析查詢工具,尤其
    發表于 12-26 15:02

    Hadoop新手篇:hadoop入門基礎教程

    一起就算是hadoop新手入門的一個基礎性教程吧(持續更新中)。 五篇文章講什么?前兩周時間寫的五篇文章,其實都在講一件事情——hadoop運行環境安裝部署!可能口頭描述幾分鐘就可以把整個過程說完了,但
    發表于 01-09 15:39

    hadoop集群的NameNod

    hadoop集群部署
    發表于 08-20 14:33

    Hadoop-260 HA部署步驟

    Hadoop-260 HA(高可用架構)部署(超詳細)
    發表于 09-12 09:38

    如何將程序很好的部署

    我們要開啟一個項目,如何將程序很好的部署關系到后續的代碼移植和代碼量增多之后的管理。本文就針對上述問題,提出一種合理的工程部署方法。我們基于cobemx的軟件靈活性,確保每次編譯之后否不改變系統
    發表于 08-24 07:40

    如何將AI模型部署到嵌入式系統中

    本期我們分享主題是如何將 AI 模型部署到嵌入式系統中,下一期介紹如何在 RT-Thread 操作系統運行 Mnist Demo(手寫數字識別)。 嵌入式關聯 AIAI落地一直是一
    發表于 12-14 07:55

    如何將外界溫度顯示1602LCD

    如何將外界溫度顯示1602LCD
    發表于 01-24 07:30

    如何將RF與數模電路設計同一PCB

    如何將RF與數模電路設計同一PCB
    發表于 01-12 21:59 ?17次下載

    淺析Hadoop集群硬件選擇

    Hadoop遠遠不止HDFS和MapReduce/Spark,它是一個全面的數據平臺。CDH平臺包含了很多Hadoop生態圈的其他組件。我們在做群集規劃的時候往往還需要考慮HBase,Impala和Solr等。它們都會運行在DataNode
    發表于 11-09 11:59 ?1700次閱讀
    淺析<b class='flag-5'>Hadoop</b>集群<b class='flag-5'>硬件</b>選擇

    基于Hadoop的I/O硬件壓縮加速器

    ,因此使用硬件壓縮加速器來替換軟件壓縮。Hadoop運行在Java虛擬機上,無法直接調用底層I/O硬件壓縮加速器。通過實現Hadoop壓縮器/解壓縮器類和設計C++動態鏈接庫來解決從
    發表于 11-27 10:49 ?0次下載
    基于<b class='flag-5'>Hadoop</b>的I/O<b class='flag-5'>硬件</b>壓縮加速器

    idea如何將項目部署到tomcat服務器

    項目部署到Tomcat服務器是一個常見的操作,下面是一個詳細的步驟指南,描述了如何將項目成功部署到Tomcat服務器
    的頭像 發表于 12-03 15:25 ?1643次閱讀
    主站蜘蛛池模板: 精品国产乱码久久久久久免费 | 国产人妻精品午夜福利免费不卡 | 趁老师睡着吃她的奶水 | 国产午夜一级鲁丝片 | 色精品极品国产在线视频 | 国精产品一区二区三区 | 久久亚洲国产成人影院 | 色宅男看片午夜大片免费看 | 午夜视频在线网站 | 色尼玛亚洲 | 成人国产在线观看 | 日韩欧美中文字幕在线 | 好满射太多了装不下了视频 | 国产青青草原 | 亚洲成人三级 | 巨胸美乳中文在线观看 | 日韩欧美精品有码在线播放 | 中文字幕不卡在线高清 | 麻豆AV蜜桃AV久久 | 回复术士勇者免费观看全集 | 日韩欧美一区二区三区免费观看 | 邪恶肉肉全彩色无遮琉璃神社 | 777精品久无码人妻蜜桃 | 国产精品亚洲欧美 | 美女激清床上戏大全 | 视频一区亚洲中文字幕 | 久久精品视频在线看99 | 国产黄A片在线观看永久免费麻豆 | 日本人69xxx 日本全彩黄漫无遮挡 | 男生扒开美女尿口戳戳 | 处女座历史名人 | 日本一本二本三区免费免费高清 | 色一欲一性一乱一区二区三区 | 久久性生大片免费观看性 | 67194在线入口免费 | 精品无码日本蜜桃麻豆 | 国产成人精品男人的天堂网站 | 久热人人综合人人九九精品视频 | 18 japanese宾馆直播 | 性西欧俄罗斯极品 | 天美传媒在线完整免费观看网站 |