基于Yarn的Spark环境,统计哈姆雷特词频(1)

简介: 一、最流行的大数据框架SparkYarn 环境搭建Spark History Server 以及 Yarn MapReduce History ServcerSpark-submit 提交到Yarn 运行二、Docker部署Hadoop Y...

一、最流行的大数据框架Spark

  1. Yarn 环境搭建
  2. Spark History Server 以及 Yarn MapReduce History Servcer
  3. Spark-submit 提交到Yarn 运行

二、Docker部署Hadoop Yarn

部署结果:

  • 一台namenode节点,运行

namenode
resourcemanager
JobHistoryServer
HistoryServer

  • 2台datanode节点,运行

datanode
nodemanager

  • 主机Mac

docker宿主机(virtualbox)
Intellij idea
spark client
hdfs client

三、网络结构

  • mac 192.168.99.1
  • namenode 172.18.0.11
  • datanode1,datanode2 172.18.0.13 172.18.0.14
  • virtualbox 网桥 192.168.99.100

建立192.168.99.1 ~ 172.18.0.0 路由

sudo route -n add 172.18.0.0/24 192.168.99.100

docker 创建 172.18 网段,命名hadoopnet,docker设置ip必须先创建网络

docker network create --subnet=172.18.0.0/16 hadoopnet

四、启动docker

本地文件夹,整理好的工作空间

hadoop文件夹

说明:每个文件夹包含一个启动脚本和一个hdfs挂载的共享卷data


etc/hadoop

说明:本地的hadoop目录会挂载到docker中hadoop/etc/hadoop配置文件目录。

1. NameNode

docker run --name namenode \
--hostname namenode \
--network  hadoopnet \
--ip 172.18.0.11 \
-d \
-v $PWD/data:/opt/tmp \
-v /Users/wangsen/hadoop/datanode/hadoop:/opt/hadoop-2.7.3/etc/hadoop \
-v $PWD/spark-2.1.1-bin-hadoop2.7:/opt/spark  \
--rm dbp/hadoop 

dbp/hadoop是docker镜像的名字,共加载了3个共享卷(文件夹)

  • /opt/tmp hdfs 存储路径
  • etc/hadoop hadpoop配置路径
  • 主节点挂载spark

在创建镜像的时候没有装载spark,hadoop是通过Dockerfile创建dbp/hadoop时,装载到镜像中的;设置spark采用装载模式,也可以重新commit或build dockerfile生成包含spark的镜像。

2. DataNode(datanode1、datanode2)

docker run --name datanode1 --hostname datanode1 --network  hadoopnet --ip 172.18.0.13 -d -v $PWD/data:/opt/tmp -v /Users/wangsen/hadoop/datanode/hadoop:/opt/hadoop-2.7.3/etc/hadoop   --rm dbp/hadoop 
docker run --name datanode2 --hostname datanode2 --network  hadoopnet --ip 172.18.0.14 -d -v $PWD/data:/opt/tmp -v /Users/wangsen/hadoop/datanode/hadoop:/opt/hadoop-2.7.3/etc/hadoop   --rm dbp/hadoop 

五、启动HDFS、YARN

  • etc/hadoop/core-site.xml

   ## 配置HDFS路径 
   <property>
        <name>fs.defaultFS</name>
        <value>hdfs://namenode:9000</value>
    </property>
  • etc/hadoop/hdfs-site.xml

    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/opt/tmp</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/opt/tmp</value>
    </property>
  • etc/hadoop/yarn-site.xml

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value> 
    </property>
    <property> 
        <name>yarn.resourcemanager.address</name> 
        <value>namenode:18040</value>
    </property> 
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>namenode:18030</value> 
    </property>
    <property> 
        <name>yarn.resourcemanager.resource-tracker.address</name> 
        <value>namenode:18025</value>
    </property> 
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>namenode:18141</value> 
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name> 
        <value>namenode:18088</value>
   </property> 
   <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value> 
    </property>
    <property>
        <name>yarn.log.server.url</name> 
        <value>http://namenode:19888/jobhistory/logs</value>
   </property> 
   <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value> 
    </property>
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value> 
    </property>
  • spark/conf/spark-env

export HADOOP_CONF_DIR=/opt/hadoop-2.7.3/etc/hadoop
  • spark/conf/spark-defaults.conf

## 配置spark ui 页面,通过yarn history服务查看spark任务运行结果
## hdfs:///tmp/spark/events是hdfs上的路径,保存spark运行信息
spark.master=local
spark.yarn.historyServer.address=namenode:18080
spark.history.ui.port=18080
spark.eventLog.enabled=true
spark.eventLog.dir=hdfs:///tmp/spark/events
spark.history.fs.logDirectory=hdfs:///tmp/spark/events
  • hadoop/etc/hadoop-env.sh

修改JAVA_HOME,填写java_home的绝对路径

启动顺序

  • HDFS
    namenode -->sbin/hadoop-daemon.sh start namenode
    datanode -->sbin/hadoop-daemon.sh start datanode
    (已经设置好ssh免密码登录,docker共享了public_key文件。)
  • Yarn
    namenode --> sbin/yarn-daemon.sh start resourcemanager
    datanode -->sbin/yarn-daemon.sh start nodemanager
  • Spark jobserver
    namenode--> sbin/mr-jobhistory-daemon.sh start historyserver
    namenode--> spart/sbin/start-history-server.sh

六、浏览spark histroy页面

http://namenode:18080

spark history

附录 Dockerfile

如果你希望按作者的思路,搭建自己的spark docker集群,那么你可以从Dockerfile 创建image开始。

FROM       ubuntu:16.04
MAINTAINER wsn

RUN apt-get update

RUN apt-get install -y openjdk-8-jdk
RUN apt-get install -y vim
RUN apt install -y net-tools
RUN apt install -y iputils-ping 

RUN apt-get install -y openssh-server
RUN mkdir /var/run/sshd

RUN echo 'root:root' |chpasswd

RUN sed -ri 's/^PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
RUN sed -ri 's/#   StrictHostKeyChecking ask/StrictHostKeyChecking no/' /etc/ssh/ssh_config

RUN mkdir /root/.ssh
RUN ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa
RUN cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
 
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64
ENV JRE_HOME /usr/lib/jvm/java-8-openjdk-amd64/jre
ENV PATH /opt/hadoop-2.7.3/bin:/opt/hadoop-2.7.3/sbin:/usr/lib/jvm/java-8-openjdk-amd64/bin:$PATH
ENV CLASSPATH ./:/usr/lib/jvm/java-8-openjdk-amd64/lib:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib

ADD hadoop-2.7.3.tar.gz /opt/
EXPOSE 22

CMD  ["/usr/sbin/sshd", "-D"]

目录
相关文章
|
2月前
|
SQL 机器学习/深度学习 分布式计算
大数据-81 Spark 安装配置环境 集群环境配置 超详细 三台云服务器
大数据-81 Spark 安装配置环境 集群环境配置 超详细 三台云服务器
70 1
|
4月前
|
分布式计算 资源调度 大数据
【决战大数据之巅】:Spark Standalone VS YARN —— 揭秘两大部署模式的恩怨情仇与终极对决!
【8月更文挑战第7天】随着大数据需求的增长,Apache Spark 成为关键框架。本文对比了常见的 Spark Standalone 与 YARN 部署模式。Standalone 作为自带的轻量级集群管理服务,易于设置,适用于小规模或独立部署;而 YARN 作为 Hadoop 的资源管理系统,支持资源的统一管理和调度,更适合大规模生产环境及多框架集成。我们将通过示例代码展示如何在这两种模式下运行 Spark 应用程序。
268 3
|
1月前
|
消息中间件 资源调度 关系型数据库
如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理
本文介绍了如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理。主要内容包括安装Debezium、配置Kafka Connect、创建Flink任务以及启动任务的具体步骤,为构建实时数据管道提供了详细指导。
60 9
|
1月前
|
分布式计算 资源调度 Hadoop
Spark Standalone与YARN的区别?
本文详细解析了 Apache Spark 的两种常见部署模式:Standalone 和 YARN。Standalone 模式自带轻量级集群管理服务,适合小规模集群;YARN 模式与 Hadoop 生态系统集成,适合大规模生产环境。文章通过示例代码展示了如何在两种模式下运行 Spark 应用程序,并总结了两者的优缺点,帮助读者根据需求选择合适的部署模式。
58 3
|
2月前
|
分布式计算 资源调度 Hadoop
Spark Standalone与YARN的区别?
【10月更文挑战第5天】随着大数据处理需求的增长,Apache Spark 成为了广泛采用的大数据处理框架。本文详细解析了 Spark Standalone 与 YARN 两种常见部署模式的区别,并通过示例代码展示了如何在不同模式下运行 Spark 应用程序。Standalone 模式自带轻量级集群管理,适合小规模集群或独立部署;YARN 则作为外部资源管理器,能够与 Hadoop 生态系统中的其他应用共享资源,更适合大规模生产环境。文章对比了两者的资源管理、部署灵活性、扩展性和集成能力,帮助读者根据需求选择合适的部署模式。
31 1
|
3月前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
47 5
|
6月前
|
资源调度 分布式计算 监控
Spark Standalone与YARN的区别?
【6月更文挑战第17天】Spark Standalone与YARN的区别?
349 57
|
5月前
|
SQL 弹性计算 资源调度
云服务器 ECS产品使用问题之bin/spark-sql --master yarn如何进行集群模式运行
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
分布式计算 Scala 开发工具
spark 之 Scala 环境搭建,开发工具使用
1,首先介绍官网网站 http://scala-lang.org/ 下载windows 的exe直接进行安装就行。 安装后有个本地文档可以使用: 2,工具使用 继续使用eclipse。如果是IDEA直接使用插件就行了。 http://scala-ide.org/download/current.html 安装url: http://download.scala-
1273 0
|
1月前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
108 2
ClickHouse与大数据生态集成:Spark & Flink 实战