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

master slave1 slave2 slave3
hdfs name node, data node data node data node,secondarynamenode data node
yarn node manager resource manager,node manager node manager node manager
hive hive
spark spark file spark file spark file spark 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的容器化部署。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐