百度SEO

百度SEO

Products

当前位置:首页 > 百度SEO >

如何为酒店网站定制一个吸引人的HTML模板,以有效展示背投广告?

96SEO 2026-02-20 07:41 0


文章目录

本课程所用集群由5台节点构成其中2台为master节点用于部署HDFS的NameNodeYarn的ResourceManager等角色另外3台为worker节点用于部署HDFS的DataNode、Yarn的NodeManager等角色。

如何为酒店网站定制一个吸引人的HTML模板,以有效展示背投广告?

1.2

hadoop100hadoop101hadoop102hadoop103hadoop104mastermasterworkerworkerworkerNameNodeNameNodeDataNodeDataNodeDataNodeResourceManagerResourceManagerNodeManagerNodeManagerNodeManagerJournalNodeJournalNodeJournalNodeZookeeperZookeeperZookeeperKafkaKafkaKafkaHiveserver2Metastorehive-clienthive-clienthive-clientSparkSparkSparkSparkDS-masterDS-masterDS-workerDS-workerDS-worderMaxwellmysqlflumeflume

第2章

需要调整的Yarn参数均与CPU、内存等资源有关核心配置参数如下。

1yarn.nodemanager.resource.memory-mb

该参数的含义是一个NodeManager节点分配给Container使用的内存。

该参数的配置取决于NodeManager所在节点的总内存容量和该节点运行的其他服务的数量。

yarn.nodemanager.resource.memory-mb

65536

2yarn.nodemanager.resource.cpu-vcores

该参数的含义是一个NodeManager节点分配给Container使用的CPU核数。

该参数的配置同样取决于NodeManager所在节点的总CPU核数和该节点运行的其他服务。

yarn.nodemanager.resource.cpu-vcores

3yarn.scheduler.maximum-allocation-mb

该参数的含义是单个Container能够使用的最大内存。

由于Spark的yarn模式下Driver和Executor都运行在Container中故该参数不能小于Driver和Executor的内存配置推荐配置如下

yarn.scheduler.maximum-allocation-mb

16384

4yarn.scheduler.minimum-allocation-mb

该参数的含义是单个Container能够使用的最小内存推荐配置如下

yarn.scheduler.minimum-allocation-mb

512

1修改$HADOOP_HOME/etc/hadoop/yarn-site.xml文件

2修改如下参数

yarn.nodemanager.resource.memory-mb

65536

yarn.nodemanager.resource.cpu-vcores

yarn.scheduler.maximum-allocation-mb

16384

yarn.scheduler.minimum-allocation-mb

512

单个Executor的CPU核数由spark.executor.cores参数决定建议配置为4-6具体配置为多少视具体情况而定原则是尽量充分利用资源。

此处单个节点共有16个核可供Executor使用则spark.executor.core配置为4最合适。

原因是若配置为5则单个节点只能启动3个Executor会剩余1个核未使用若配置为6则只能启动2个Executor会剩余4个核未使用。

3.1.2

Spark在Yarn模式下的Executor内存模型如下图所示

Executor相关的参数有spark.executor.memory和spark.executor.memoryOverhead。

spark.executor.memory用于指定Executor进程的堆内存大小这部分内存用于任务的计算和存储spark.executor.memoryOverhead用于指定Executor进程的堆外内存这部分内存用于JVM的额外开销操作系统开销等。

两者的和才算一个Executor进程所需的总内存大小。

默认情况下spark.executor.memoryOverhead的值等于spark.executor.memory*0.1。

以上两个参数的推荐配置思路是先按照单个NodeManager的核数和单个Executor的核数计算出每个NodeManager最多能运行多少个Executor。

在将NodeManager的总内存平均分配给每个Executor最后再将单个Executor的内存按照大约10:1的比例分配到spark.executor.memory和spark.executor.memoryOverhead。

(spark.executor.memoryspark.executor.memoryOverhead)

yarn.nodemanager.resource.memory-mb

(spark.executor.cores/yarn.nodemanager.resource.cpu-vcores)

经计算此处应做如下配置

此处的Executor个数是指分配给一个Spark应用的Executor个数Executor个数对于Spark应用的执行速度有很大的影响所以Executor个数的确定十分重要。

一个Spark应用的Executor个数的指定方式有两种静态分配和动态分配。

1**静态分配**

可通过spark.executor.instances指定一个Spark应用启动的Executor个数。

这种方式需要自行估计每个Spark应用所需的资源并为每个应用单独配置Executor个数。

2**动态分配**

动态分配可根据一个Spark应用的工作负载动态的调整其所占用的资源Executor个数。

这意味着一个Spark应用程序可以在运行的过程中需要时申请更多的资源启动更多的Executor不用时便将其释放。

#启动动态分配

spark.dynamicAllocation.enabled

true

spark.dynamicAllocation.initialExecutors

#Executor个数最小值

spark.dynamicAllocation.minExecutors

#Executor个数最大值

spark.dynamicAllocation.maxExecutors

#Executor空闲时长若某Executor空闲时间超过此值则会被关闭

spark.dynamicAllocation.executorIdleTimeout

60s

#积压任务等待时长若有Task等待时间超过此值则申请启动新的Executor

spark.dynamicAllocation.schedulerBacklogTimeout

#spark

spark.shuffle.useOldFetchProtocol

true

shuffle服务的作用是管理Executor中的各Task的输出文件主要是shuffle过程map端的输出文件。

由于启用资源动态分配后Spark会在一个应用未结束前将已经完成任务处于空闲状态的Executor关闭。

Executor关闭后其输出的文件也就无法供其他Executor使用了。

需要启用Spark

shuffle服务来管理各Executor输出的文件这样就能关闭空闲的Executor而不影响后续的计算任务了。

3.2

Driver主要配置内存即可相关的参数有spark.driver.memory和spark.driver.memoryOverhead。

spark.driver.memory用于指定Driver进程的堆内存大小spark.driver.memoryOverhead用于指定Driver进程的堆外内存大小。

默认情况下两者的关系如下spark.driver.memoryOverheadspark.driver.memory*0.1。

两者的和才算一个Driver进程所需的总内存大小。

一般情况下按照如下经验进行调整即可假定yarn.nodemanager.resource.memory-mb设置为X

此处yarn.nodemanager.resource.memory-mb为64G则Driver的总内存可分配12G所以上述两个参数可配置为。

spark.driver.memory

spark.yarn.driver.memoryOverhead

3.3

1修改$HIVE_HOME/conf/spark-defaults.conf

spark.master

hdfs://myNameService1/spark-history

spark.executor.cores

spark.dynamicAllocation.enabled

true

spark.dynamicAllocation.executorIdleTimeout

60s

spark.dynamicAllocation.initialExecutors

spark.dynamicAllocation.minExecutors

spark.dynamicAllocation.maxExecutors

spark.dynamicAllocation.schedulerBacklogTimeout

spark.shuffle.useOldFetchProtocol

true

Managerstandalone、Mesos、Yarn的不同而不同。

此处以Yarn作为Cluster

1拷贝$SPARK_HOME/yarn/spark-3.0.0-yarn-shuffle.jar到

$HADOOP_HOME/share/hadoop/yarn/lib

2分发$HADOOP_HOME/share/hadoop/yarn/lib/yarn/spark-3.0.0-yarn-shuffle.jar

3修改$HADOOP_HOME/etc/hadoop/yarn-site.xml文件

mapreduce_shuffle,spark_shuffle

yarn.nodemanager.aux-services.spark_shuffle.class

org.apache.spark.network.yarn.YarnShuffleService

4分发$HADOOP_HOME/etc/hadoop/yarn-site.xml文件

5重启Yarn

Explain呈现的执行计划由一系列Stage组成这个Stage具有依赖关系每个Stage对应一个MapReduce

Job或者Spark

每个Stage由一系列的Operator组成一个Operator代表一个逻辑操作例如TableScan

OperatorSelect

1.https://cwiki.apache.org/confluence/display/Hive/LanguageManualExplain

2.https://cwiki.apache.org/confluence/download/attachments/44302539/hos_explain.pdf?version1modificationDate1425575903211apiv2

第5章分组聚合优化

优化思路为map-side聚合。

所谓map-side聚合就是在map端维护一个hash

table利用其完成分区内的、部分的聚合然后将部分聚合的结果发送至reduce端完成最终的聚合。

map-side聚合能有效减少shuffle的数据量提高分组聚合运算的效率。

map-side

hive.map.aggr.hash.percentmemory0.5;

set

hive.groupby.mapaggr.checkinterval100000;

–map-side聚合所用的HashTable占用map任务堆内存的最大比例若超出该值则会对HashTable进行一次flush。

set

hive.map.aggr.hash.force.flush.memory.threshold0.9;

5.3

Map端负责读取参与join的表的数据并按照关联字段进行分区将其发送到Reduce端Reduce端完成最终的关联操作。

2****map

若参与join的表中有n-1张表足够小Map端就会缓存小表全部数据然后扫描另外一张大表在Map端完成关联操作。

3****Sort

若参与join的表均为分桶表且关联字段为分桶字段且分桶字段是有序的且大表的分桶数量是小表分桶数量的整数倍。

此时就可以以分桶为单位为每个Map分配任务了Map端就无需再缓存小表的全表数据了而只需缓存其所需的分桶。

6.2

hive.auto.convert.join.noconditionaltask.size

6.2.3

hive.optimize.bucketmapjoin.sortedmergetrue;

–使用自动转换SMB

hive.auto.convert.sortmerge.jointrue;

6.3.2

上述SQL语句共有两张表一次join操作故优化前的执行计划应包含一个Common

3**优化思路**

表名大小dwd_trade_order_detail_inc162900000000约160gdim_user_zip12320000000

约12g

首先需要依据源表创建两个的有序的分桶表dwd_trade_order_detail_inc建议分36个bucketdim_user_zip建议分6个bucket,注意**分桶个数的倍数关系以及分桶字段和排序字段**。

–****订单明细表

dwd_trade_order_detail_inc_bucketed;

create

dwd_trade_order_detail_inc_bucketed(

string,

dwd_trade_order_detail_inc_bucketed

select

hive.optimize.bucketmapjoin.sortedmergetrue;

–使用自动转换SMB

hive.auto.convert.sortmerge.jointrue;

最后在重写SQL语句如下

dwd_trade_order_detail_inc_bucketed

join

数据倾斜问题通常是指参与计算的数据分布不均即某个key或者某些key的数据量远超其他key导致在shuffle阶段大量相同key的数据被发往一个Reduce进而导致该Reduce所需的时间远超其他Reduce成为整个任务的瓶颈。

Hive中的数据倾斜常出现在分组聚合和join操作的场景中下面分别介绍在上述两种场景下的优化思路。

7.2

hive.map.aggr.hash.percentmemory0.5;

2**启用skew

其原理是启动两个MR任务第一个MR按照随机数分区将数据分散发送到Reduce完成部分聚合第二个MR按照分组字段分区完成最终聚合。

相关参数如下

hive.auto.convert.join.noconditionaltask.size

使用map

对于一个分布式的计算任务而言设置一个合适的并行度十分重要。

在Hive中无论其计算引擎是什么所有的计算任务都可分为Map阶段和Reduce阶段。

所以并行度的调整也可从上述两个方面进行调整。

8.2

Map端的并行度也就是Map的个数。

是由输入文件的切片数决定的。

一般情况下Map端的并行度无需手动调整。

Map端的并行度相关参数如下

set

hive.input.formatorg.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

set

mapreduce.input.fileinputformat.split.maxsize256000000;

8.3

Reduce端的并行度相对来说更需要关注。

默认情况下Hive会根据Reduce端输入数据的大小估算一个Reduce并行度。

但是在某些情况下其估计值不一定是最合适的故需要人为调整其并行度。

Reduce并行度相关参数如下

hive.exec.reducers.bytes.per.reducer;

Reduce端并行度的确定逻辑为若指定参数mapreduce.job.reduces的值为一个非负整数则Reduce并行度为指定值。

否则Hive会自行估算Reduce并行度估算逻辑如下

假设Reduce端输入的数据量大小为totalInputBytes

参数hive.exec.reducers.bytes.per.reducer的值为bytesPerReducer

参数hive.exec.reducers.max的值为maxReducers

其中Reduce端输入的数据量大小是从Reduce上游的Operator的Statistics统计信息中获取的。

为保证Hive能获得准确的统计信息需配置如下参数

set

hive.stats.column.autogathertrue;

–计算Reduce并行度时从上游Operator统计信息获得输入数据量

set

hive.stats.fetch.column.statstrue;

第9章小文件合并优化

小文件合并优化分为两个方面分别是Map端输入的小文件合并和Reduce端输出的小文件合并。

9.2

合并Map端输入的小文件是指将多个小文件划分到一个切片中进而由一个Map

相关参数为

hive.input.formatorg.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

9.3

合并Reduce端输出的小文件是指将多个小文件合并成大文件。

目的是减少HDFS小文件数量。

相关参数为

1.https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/admin_hos_tuning.html#hos_tuning

2.https://cwiki.apache.org/confluence/display/Hive/HiveonSpark%3AGettingStarted

Spark性能调优完整版



SEO优化服务概述

作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。

百度官方合作伙伴 白帽SEO技术 数据驱动优化 效果长期稳定

SEO优化核心服务

网站技术SEO

  • 网站结构优化 - 提升网站爬虫可访问性
  • 页面速度优化 - 缩短加载时间,提高用户体验
  • 移动端适配 - 确保移动设备友好性
  • HTTPS安全协议 - 提升网站安全性与信任度
  • 结构化数据标记 - 增强搜索结果显示效果

内容优化服务

  • 关键词研究与布局 - 精准定位目标关键词
  • 高质量内容创作 - 原创、专业、有价值的内容
  • Meta标签优化 - 提升点击率和相关性
  • 内容更新策略 - 保持网站内容新鲜度
  • 多媒体内容优化 - 图片、视频SEO优化

外链建设策略

  • 高质量外链获取 - 权威网站链接建设
  • 品牌提及监控 - 追踪品牌在线曝光
  • 行业目录提交 - 提升网站基础权威
  • 社交媒体整合 - 增强内容传播力
  • 链接质量分析 - 避免低质量链接风险

SEO服务方案对比

服务项目 基础套餐 标准套餐 高级定制
关键词优化数量 10-20个核心词 30-50个核心词+长尾词 80-150个全方位覆盖
内容优化 基础页面优化 全站内容优化+每月5篇原创 个性化内容策略+每月15篇原创
技术SEO 基本技术检查 全面技术优化+移动适配 深度技术重构+性能优化
外链建设 每月5-10条 每月20-30条高质量外链 每月50+条多渠道外链
数据报告 月度基础报告 双周详细报告+分析 每周深度报告+策略调整
效果保障 3-6个月见效 2-4个月见效 1-3个月快速见效

SEO优化实施流程

我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:

1

网站诊断分析

全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。

2

关键词策略制定

基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。

3

技术优化实施

解决网站技术问题,优化网站结构,提升页面速度和移动端体验。

4

内容优化建设

创作高质量原创内容,优化现有页面,建立内容更新机制。

5

外链建设推广

获取高质量外部链接,建立品牌在线影响力,提升网站权威度。

6

数据监控调整

持续监控排名、流量和转化数据,根据效果调整优化策略。

SEO优化常见问题

SEO优化一般需要多长时间才能看到效果?
SEO是一个渐进的过程,通常需要3-6个月才能看到明显效果。具体时间取决于网站现状、竞争程度和优化强度。我们的标准套餐一般在2-4个月内开始显现效果,高级定制方案可能在1-3个月内就能看到初步成果。
你们使用白帽SEO技术还是黑帽技术?
我们始终坚持使用白帽SEO技术,遵循搜索引擎的官方指南。我们的优化策略注重长期效果和可持续性,绝不使用任何可能导致网站被惩罚的违规手段。作为百度官方合作伙伴,我们承诺提供安全、合规的SEO服务。
SEO优化后效果能持续多久?
通过我们的白帽SEO策略获得的排名和流量具有长期稳定性。一旦网站达到理想排名,只需适当的维护和更新,效果可以持续数年。我们提供优化后维护服务,确保您的网站长期保持竞争优势。
你们提供SEO优化效果保障吗?
我们提供基于数据的SEO效果承诺。根据服务套餐不同,我们承诺在约定时间内将核心关键词优化到指定排名位置,或实现约定的自然流量增长目标。所有承诺都会在服务合同中明确约定,并提供详细的KPI衡量标准。

SEO优化效果数据

基于我们服务的客户数据统计,平均优化效果如下:

+85%
自然搜索流量提升
+120%
关键词排名数量
+60%
网站转化率提升
3-6月
平均见效周期

行业案例 - 制造业

  • 优化前:日均自然流量120,核心词无排名
  • 优化6个月后:日均自然流量950,15个核心词首页排名
  • 效果提升:流量增长692%,询盘量增加320%

行业案例 - 电商

  • 优化前:月均自然订单50单,转化率1.2%
  • 优化4个月后:月均自然订单210单,转化率2.8%
  • 效果提升:订单增长320%,转化率提升133%

行业案例 - 教育

  • 优化前:月均咨询量35个,主要依赖付费广告
  • 优化5个月后:月均咨询量180个,自然流量占比65%
  • 效果提升:咨询量增长414%,营销成本降低57%

为什么选择我们的SEO服务

专业团队

  • 10年以上SEO经验专家带队
  • 百度、Google认证工程师
  • 内容创作、技术开发、数据分析多领域团队
  • 持续培训保持技术领先

数据驱动

  • 自主研发SEO分析工具
  • 实时排名监控系统
  • 竞争对手深度分析
  • 效果可视化报告

透明合作

  • 清晰的服务内容和价格
  • 定期进展汇报和沟通
  • 效果数据实时可查
  • 灵活的合同条款

我们的SEO服务理念

我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。

提交需求或反馈

Demand feedback