基于K8S的hadoop集群初探

本文档详述了如何在四台机器上搭建基于YARN的Hadoop HDFS集群,包括配置Hadoop文件、启动集群及使用Hive。此外,还介绍了Spark在YARN上的集群部署,以及YARN的资源调度流程。最后讨论了在K8s环境中部署Hadoop集群的难点和可能的解决方案。
摘要由CSDN通过智能技术生成

1、hadoop集群

1.1、基于yarn的hdfs安装

前言:yarn服务需要每个节点之间通过host进行通信,hdfs的name node也需要知道data node的host

1、基于docker-compose启动可以使用link来获取其他容器host
2、基于k8s的搭建,难点则在host的同步

本次搭建基于四台机器的集群测试搭建,基于yarn的hdfs部署,由于本次记录是为了k8s集群搭建,主要记录搭建步骤,文件的详细配置、其他安装方式如local、standalone可以参考其他文章,环境如下:
master:192.168.81.232
slave1: 192.168.81.231
slave2: 192.168.81.227
slave3: 192.168.81.228

masterslave1slave2slave3
hdfsname node, data nodedata nodedata node,secondarynamenodedata node
yarnnode managerresource manager,node managernode managernode manager
hivehive
sparkspark filespark filespark filespark file

1、hadoop文件配置(括号中配置主要是地址配置):

  • 每台机器部署jdk安装(1.8版本)
  • core-site.xml文件配置(存储目录、name node地址)
  • hdfs-site.xml文件配置(副本数量、secondarynamenode地址)
  • yarn-env.sh文件配置jdk路径
  • yarn-site.xml文件配置resourcemanager地址
  • mapred-env.sh配置jdk路径
  • mapred-site.xml配置mr运行在yarn 上

2、配置好的hadoop文件夹分发到4台机器上
3、在namenode上执行hdfs namenode -format
4、启动集群(没有用yarn的启动文件,所以不需要设置免密登陆,为了用k8s的启动命令):
(nohup 命令 &) :以子进程后台启动

# master:
(nohup hdfs namenode &)  
(nohup hdfs datanode -regular &) 
(nohup yarn nodemanager -regular &)
# slave1: 
(nohup hdfs datanode -regular &) 
(nohup yarn nodemanager &)
(nohup yarn resourcemanager &) 
# slave2: 
(nohup hdfs datanode -regular &) 
(nohup yarn nodemanager &)
(nohup hdfs secondarynamenode &) 
# slave3: 
(nohup hdfs datanode -regular &) 
(nohup yarn nodemanager &) 

至此hdfs集群就已经安装成功了,如需启动name node的HA,可以启动zookeeper的k8s集群,并在hadoop的:hdfs-site.xml配置ha的name node地址及数据一致性的方式等,core-site.xml配置zookeeper的地址

1.2、使用hive

hive只需要启动一台机器,并且并不需要一定在刚刚的集群上安装,只需要机器上有刚刚配置好的hadoop文件夹就行
1、hive文件配置

  • hive-env.sh配置hadoop的目录地址,jdk地址
  • hive-site.xml配置存储目录、hdfs地址、mysql地址、metastore、hiveserver2配置
  • lib目录上传mysql的jdbc连接包
# hive
# 第一次启动进行初始化
(nohup schematool -initSchema -dbType mysql &)

(nohup hive --service metastore &)  

hive --service hiveserver2
# debug信息测试用
#hive --service hiveserver2 -hiveconf hive.root.logger=debug,console

2、启动服务

2、spark集群

2.1 基于yarn的spark集群

spark基于yarn的集群部署,只需要在yarn集群每台机器上配置spark的文件(运行节点),spark在任意一台机器上都可以spark submit到yarn上(不在yarn的集群上submit也可以,只要下面对应配置目录做好)
1、安装jdk
2、安装scala
3、文件配置

  • spark-env.sh配置jdk、scala、yarn(hadoop)目录、spark运行参数、spark配置目录
  • 基于yarn的spark,不需要配置slaves文件(没有主从之分,stanalone需要配置)

4、任务运行

# 会根据配置的yarn目录,寻找到yarn 的rm节点提交,rm分配置资源运行
spark-submit --master yarn --class org.apache.spark.examples.SparkPi $SPARK_HOME/examples/jars/spark-examples*.jar

# mster woker方式提交,指定master节点()stannalone模式
spark-submit --master spark://192.168.80.235:7077 --class org.apache.spark.examples.SparkPi $SPARK_HOME/examples/jars/spark-examples*.jar

#Local 调试
spark-submit --master local --class demo /Users/gumkk/IdeaProjects/myFirstProject/out/artifacts/myFirstProject_jar/myFirstProject.jar

2.2 yarn资源调度流程

这边主要是自己的一个记录,Yarn主要由四个重要角色组成:

  1. ResourceManager:资源管理器

  2. NodeManager:节点管理器

  3. ApplicaitonMaster:用户提交的每个program都会对应一个ApplicationMaster,ApplicationMaster向ResourceManager申请资源,请求NodeManager启动task

  4. Container:容器是资源调度的单位,Application Master会给task分配Container,分配流程为Resource Manager ->Application Master -> task

总结:

基于k8s的hadoop集群部署,难点在于各个组件的master和node通过hosts进行通信,阅读其他技术文章,有如下两种思路:1、固定每个pod的ip和hosts,然后通过公司的dns做一个解析,这样只要在配置文件里配置好各组件的地址、hosts的文件,启动方式和宿主机一样;2、通过zookeeper或etcd的一些服务发现组件,在各服务节点启动时进行注册、并更新本地hosts文件。

后面会进行具体实施的结果对比,不过CDH其实挺香,考虑基于CDH的容器化部署。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值