gitweixin
  • 首页
  • 小程序代码
    • 资讯读书
    • 工具类
    • O2O
    • 地图定位
    • 社交
    • 行业软件
    • 电商类
    • 互联网类
    • 企业类
    • UI控件
  • 大数据开发
    • Hadoop
    • Spark
    • Hbase
    • Elasticsearch
    • Kafka
    • Flink
    • 数据仓库
    • 数据挖掘
    • flume
    • Kafka
    • Hive
    • shardingsphere
    • solr
  • 开发博客
    • Android
    • php
    • python
    • 运维
    • 技术架构
    • 数据库
  • 程序员网赚
  • bug清单
  • 量化投资
  • 在线查询工具
    • 去行号
    • 在线时间戳转换工具
    • 免费图片批量修改尺寸在线工具
    • SVG转JPG在线工具

年度归档2023

精品微信小程序开发门户,代码全部亲测可用

  • 首页   /  
  • 2023
  • ( 页面9 )
Java 5月 25,2023

Java 中的梯度下降

今天的大多数人工智能都是使用某种形式的神经网络实现的。在我的前两篇文章中,我介绍了神经网络并向您展示了如何在 Java 中构建神经网络。神经网络的力量主要来自于它的深度学习能力,而这种能力建立在梯度下降反向传播的概念和执行之上。我将通过快速深入了解 Java 中的反向传播和梯度下降来结束这个简短的系列文章。
有人说人工智能并不是那么智能,它主要是反向传播。那么,现代机器学习的基石是什么?
要了解反向传播,您必须首先了解神经网络的工作原理。基本上,神经网络是称为神经元的节点的有向图。神经元有一个特定的结构,它接受输入,将它们与权重相乘,添加一个偏差值,并通过激活函数运行所有这些。神经元将它们的输出馈送到其他神经元,直到到达输出神经元。输出神经元产生网络的输出。 (有关更完整的介绍,请参阅机器学习风格:神经网络简介。)
从这里开始,我假设您了解网络及其神经元的结构,包括前馈。示例和讨论将集中在梯度下降的反向传播上。我们的神经网络将有一个输出节点、两个“隐藏”节点和两个输入节点。使用一个相对简单的例子可以更容易地理解算法所涉及的数学。图 1 显示了示例神经网络的图表。
图 1. 我们将用于示例的神经网络图。
梯度下降反向传播的思想是将整个网络视为一个多元函数,为损失函数提供输入。损失函数通过将网络输出与已知的良好结果进行比较来计算一个表示网络执行情况的数字。与良好结果配对的输入数据集称为训练集。损失函数旨在随着网络行为远离正确而增加数值。
梯度下降算法采用损失函数并使用偏导数来确定网络中每个变量(权重和偏差)对损失值的贡献。然后它向后移动,访问每个变量并调整它以减少损失值。
理解梯度下降涉及微积分中的一些概念。首先是导数的概念。 MathsIsFun.com 对导数有很好的介绍。简而言之,导数为您提供函数在单个点处的斜率(或变化率)。换句话说,函数的导数为我们提供了给定输入的变化率。 (微积分的美妙之处在于它可以让我们在没有其他参考点的情况下找到变化——或者更确切地说,它可以让我们假设输入的变化非常小。)
下一个重要的概念是偏导数。偏导数让我们采用多维(也称为多变量)函数并仅隔离其中一个变量以找到给定维度的斜率。
导数回答了以下问题:函数在特定点的变化率(或斜率)是多少?偏导数回答了以下问题:给定方程的多个输入变量,仅这一个变量的变化率是多少?
梯度下降使用这些思想来访问方程中的每个变量并对其进行调整以最小化方程的输出。这正是我们训练网络时想要的。如果我们将损失函数视为绘制在图表上,我们希望以增量方式向函数的最小值移动。也就是说,我们要找到全局最小值。
请注意,增量的大小在机器学习中称为“学习率”。
当我们探索梯度下降反向传播的数学时,我们将紧贴代码。当数学变得过于抽象时,查看代码将有助于让我们脚踏实地。让我们首先查看我们的 Neuron 类,如清单 1 所示。
Neuron 类只有三个 Double 成员:weight1、weight2 和 bias。它也有一些方法。用于前馈的方法是 compute()。它接受两个输入并执行神经元的工作:将每个输入乘以适当的权重,加上偏差,然后通过 sigmoid 函数运行它。
在我们继续之前,让我们重新审视一下 sigmoid 激活的概念,我在神经网络简介中也讨论过它。清单 2 显示了一个基于 Java 的 sigmoid 激活函数。
sigmoid 函数接受输入并将欧拉数 (Math.exp) 提高到负数,加 1 再除以 1。效果是将输出压缩在 0 和 1 之间,越来越大和越来越小的数字逐渐接近极限。
DeepAI.org 对机器学习中的 sigmoid 函数有很好的介绍。
回到清单 1 中的 Neuron 类,除了 compute() 方法之外,我们还有 getSum() 和 getDerivedOutput()。 getSum() 只是进行权重 * 输入 + 偏差计算。请注意,compute() 采用 getSum() 并通过 sigmoid() 运行它。 getDerivedOutput() 方法通过一个不同的函数运行 getSum():sigmoid 函数的导数。
现在看一下清单 3,它显示了 Java 中的 sigmoid 导数函数。我们已经从概念上讨论了衍生品,下面是实际应用。
记住导数告诉我们函数在其图中的单个点的变化是什么,我们可以感受一下这个导数在说什么:告诉我给定输入的 sigmoid 函数的变化率。您可以说它告诉我们清单 1 中的预激活神经元对最终激活结果有何影响。
您可能想知道我们如何知道清单 3 中的 sigmoid 导数函数是正确的。答案是,如果它已经被其他人验证过,并且如果我们知道根据特定规则正确微分的函数是准确的,我们就会知道导数函数是正确的。一旦我们理解了它们在说什么并相信它们是准确的,我们就不必回到第一原理并重新发现这些规则——就像我们接受并应用简化代数方程式的规则一样。
所以,在实践中,我们是按照求导法则来求导数的。如果您查看 sigmoid 函数及其导数,您会发现后者可以通过遵循这些规则得出。出于梯度下降的目的,我们需要了解导数规则,相信它们有效,并了解它们的应用方式。我们将使用它们来找出每个权重和偏差在网络最终损失结果中所扮演的角色。
符号 f prime f'(x) 是“f 对 x 的导数”的一种表达方式。另一个是:
两者是等价的:
您很快就会看到的另一种表示法是偏导数表示法:
这就是说,给我变量 x 的 f 的导数。
最令人好奇的衍生规则是链式法则。它说当一个函数是复合的(函数中的函数,又名高阶函数)时,你可以像这样扩展它:
我们将使用链式法则来解压我们的网络并获得每个权重和偏差的偏导数。

作者 east
chatgpt 5月 24,2023

90% 的亚太地区企业计划在未来 12 个月内部署人工智能:报告

预计到 2023 年底,人工智能 (AI) 将成为亚太地区的主流,该地区超过 88% 的企业已经在使用或计划在未来 12 个月内使用人工智能或机器学习 (ML) 应用程序。一份由联想和 AMD 联合委托的 IDC 报告。
“AI 应用程序使 CIO 能够分析大量信息并创建实时洞察力,以推动客户参与和客户体验,管理快速扩展的地理分散基础架构的日益复杂性以实现更高水平的弹性和敏捷性,并确保他们的 IT 运营免受勒索软件和恶意软件攻击发生率不断上升的背景下,”IDC 报告表示,该报告基于对亚太地区 900 多名首席信息官和 IT 决策者的研究。
该研究指出,预计企业将采用 AI/ML 的前三大业务流程包括 IT 运营、网络安全以及客户支持和服务。
联想 ISG 印度董事总经理 Amit Luthra 表示:“组织正在寻求 AI/ML 来简化 IT 运营,直到今天,有些组织还需要时间才能将虚拟机分配给客户。” Luthra 指出,鉴于在当前的业务环境中,一些工作负载在公共云中,而在混合云中则有一些工作负载,因此很难定义操作并确定谁负责哪些数据。 “因此,人工智能通过提供适当的见解来帮助做出明智的决定。”
报告指出,人工智能可以在确保网络安全弹性方面发挥重要作用。垂直行业中不同规模的组织根据他们的要求使用 AI 来简化安全性。 “在不依赖(最少或零接触点)人类的情况下识别、预测、响应和了解潜在威胁将是 AI 可以带来的最好的东西,当你拥有一个完整的基于 AI 的安全框架时,就会发生这种情况, ”卢瑟拉说。 “网络安全不是一种产品。根据对框架的理解程度,可以使用各种人工智能工具来构建成功的网络弹性。”
人工智能在提供卓越的客户服务方面一直发挥着重要作用。多年来,各个垂直行业的组织一直在依靠人工智能来提升客户体验。根据行业的不同,人工智能工具在不同组织中的使用程度也不同。 “例如,在汽车行业,人工智能被用于通过提供互联汽车的功能和增强的娱乐系统来确保客户体验,因为汽车的销量在很大程度上取决于此。同样在另一方面,汽车制造商在车间使用 AI 来确保将零件报废率降到最低。同样,银行业使用人工智能通过实时报告事件而不是事后报告来打击洗钱活动。与此同时,医疗保健行业正在使用 AI 来提供预防性医疗保健,”Luthra 说。
报告称,制造、零售、物流、运输和能源等垂直行业的企业越来越注重提供卓越的客户体验,以推动数字经济取得成功,而这正是人工智能可以发挥重要作用的地方。
随着 ChatGPT 和 Google Bard 等高级人工智能工具的出现,企业正在考虑不同的用例,将此类高级聊天机器人集成到他们的技术堆栈中。然而,Luthra 指出,“一些人工智能工具已经被用于各个领域。现在,随着 ChatGPT 和 Google Bard 的下一级自动搜索的出现,它将进一步推进。我们必须看看它是如何演变的。”
然而,正如报告指出的那样,打算真正利用 AI 应用程序的组织将需要进行文化转型。随着 CIO 成为当今董事会讨论的一部分,这可能不再那么困难了。 “首席信息官们希望回头在他们经营的行业中创造差异化。技术与业务保持一致并使用 AI 作为推动因素的组织能够实现这一愿景,”Luthra 说。

作者 east
云计算 5月 24,2023

适当调整工作负载以在云中取得成功

IT 和运营团队的任务是制定一项战略,以确保组织通过基于云的服务取得成功。当他们将工作负载迁移到公共云后,承诺的效率和节省没有实现时,他们常常感到失望。 Bain & Company 的一份报告,Rightsizing Your Way to the Cloud,包括对 60,000 多个工作负载的分析结果。贝恩咨询了 350 多位 IT 决策者,他们的云部署的哪些方面最令人失望且未达到他们的期望。抱怨最多的是拥有成本没有下降。在某些情况下,成本增加了。为什么没有达到预期?

该报告发现,当公司不执行必要的评估和准备时,将工作负载迁移到公共云的成本可能比将它们保留在遗留的本地环境中高出 15%。换句话说,尽管云计算的前景十分可观,但保持不变可能更具成本效益。

问题?现有的低效率正在转移到云端

Bain 的分析显示,84% 的本地工作负载被过度配置,其计算能力、内存和存储超出了高效运行所需。当 IT 运营购买的硬件多于确保它们具有足够的性能来满足工作负载需求高峰期所需的硬件时,任务关键型工作负载通常会发生过度配置。这包括使用更多装有硬盘驱动器的服务器进行横向扩展,以增加计算能力并最大程度地减少延迟。虽然硬盘驱动器成本合理,但像这样的大规模横向扩展会增加电力、冷却和管理成本。

当组织对基于云的服务采用这种方法时,他们会随之发送多余的计算和存储容量。他们并没有提高效率,而是使用一种称为“提升和转移”的方法,将现有的低效率转移到一个新的位置。贝恩发现,剥离多余的资源容量可以将云迁移成本降低多达 60%,同时降低在云中运行工作负载的长期成本。其他 IT 咨询专家也同意这一观点。根据 Forrester Research 最近的一项云成本优化研究,解决浪费的云使用和激增的云支出是云管理重要的第一步。

解决方案?合适的尺寸

调整工作负载大小涉及重新评估其所需的真实存储量和计算能力。为确定这一点,组织可以监控一段时间内的工作负载需求,以确定平均和峰值计算资源消耗。预期迁移到基于云的服务的组织应采取严格的方法来调整其工作负载,包括对整个企业的计算和存储实践进行全面评估。贝恩的经验表明,适当调整 IT 资源规模可以将运营和资本支出削减多达 30% 至 60%。

云迁移是一个长期过程,而不是一个事件

云迁移是一个长期过程,对于大规模、横向扩展的 Hadoop 和 Spark 分布式计算环境来说可能会持续数年。大多数组织一次迁移一个工作负载/应用程序。并非每个工作负载都属于云,组织将希望评估哪些是合适的候选者。由于涉及多个预迁移步骤,完成将工作负载实际迁移到云的任务需要时间。在迁移过程中,许多工作负载仍在本地运行。在可预见的未来,不适合云计算的工作负载将保留在本地。

作者 east
云计算 5月 23,2023

开始获得实时性能数据的优势

IT 基础架构服务需要不断调整和优化以维护 SLA,同时最大限度地提高您的投资。大数据的出现和随后的使用在这方面提供了巨大帮助。实时性能数据是最大限度发挥大数据力量的下一步发展。

虽然实时性能数据现在对现代企业的成功至关重要,但许多组织尚未完全由数据驱动。在 NewVantage Partners 最近的大数据和人工智能高管调查中,69% 的受访者表示他们尚未建立数据驱动的组织。在同一项研究中,72% 的受访者表示他们没有现成的数据文化。最重要的是,超过一半的参与者表示他们不将数据视为商业资产 (53%),并且不在数据和分析方面展开竞争 (52%)。

然而,随着消费者需求的增长和资源需求变得更加复杂,企业现在必须接受实时性能数据,以确保他们的 IT 架构能够跟上发展并且运营成本保持在可控范围内。

每个系统、流程、工作流和应用程序都会生成内部实时性能数据。为了提高效率和降低成本,企业利用这些数据来查看哪些任务运行缓慢,问题出在哪里,并消除瓶颈。

数据越新鲜,您就能越快地识别和解决问题。这导致更高效的流程和更快的决策制定。当来自系统、工作流和任务的数据可立即用于实时性能分析时,它们得出的见解质量更高且更具可操作性。

实时性能数据之所以强大,是因为它提供了最新的信息来改进优化工作、增强决策制定过程并实现更深入的调试、故障排除和规划。

速度是实时分析和数据处理的主要优势。企业及其 IT 团队无需等待数小时或数天才能处理和分析其性能数据。快速、实时的分析和数据处理为他们提供了执行必要调整、做出关键和战略决策以及在需要时启动干预所需的可靠信息。

应用程序数据的实时性能分析使您能够充分利用基础架构。通过对应用程序性能的实时观察,您可以快速收集来自所有层和堆栈的所有信息,并创建一个完整的画面。您会立即明白为什么您的应用程序会以它们现在的方式运行。您还知道如何快速果断地解决问题,将停机时间限制在最低限度,并确保为您的应用程序维护 SLA。

除了对您的 IT 基础设施、应用程序、工作流和流程进行快速可靠的观察之外,实时分析和数据处理还可以帮助预测资源消耗,从而允许用户为每个应用程序和任务分配适量的资源。在具有可扩展性和机器学习 (ML) 功能的 IT 堆栈优化系统中,实时性能分析有助于自动为应用程序和工作流分配和部署资源,以确保它们以最佳水平运行。

相当多的企业仍在使用过时的解决方案,几乎没有实时数据功能。这意味着他们的数据不会不断更新,也不是为与现代系统集成而设计的。数据变得停滞、孤立和无用。

对于某些组织而言,由于缺乏更新和更先进的绩效管理工具,他们需要手动收集和管理绩效数据。因此,分析和优化无法完全自动化。

如果依赖手动调整,数据的“实时新鲜度”将被浪费。要充分利用实时性能数据,企业需要同时利用自动优化和机器学习。

通过自动优化,该解决方案对整个 IT 基础架构中的所有数据执行实时性能分析。然后,该解决方案使用最理想的配置和资源数量自动扩展资源并运行应用程序和任务,以维护 SLA,同时降低成本。

作者 east
云计算 5月 23,2023

如何获得批准的项目的云 IT 预算

公司的 IT 预算就像汽车的燃料。就像汽车不会从空油箱开始一样,没有资金就无法启动 IT 项目。

但是,要获得批准的项目需要制定适当的预算计划。预算管理需要仔细规划和审议,需要考虑很多因素:材料和设备成本、人力资源和收入。此外,公司通常不会考虑优化工具,而优化工具应始终包含在 IT 项目预算中。

团队如何制定有效且令人信服的 IT 预算计划,将所有相关变量都考虑在内?

项目预算是项目必须实现的每项活动、任务和里程碑的综合成本。在编制预算时,公司必须始终将 IT 支出占收入的百分比考虑在内,并且必须找到一种方法为未来的项目预留大量资金。

创建 IT 项目预算的三个基本原因:

IT 项目可分为 CapEx(资本支出)或 OpEx(运营支出)项目。 OpEx 项目涉及正常业务期间产生的费用,其中包括一般和管理费用、研发和产品成本。同时,资本支出项目涉及购买新资产,如设备和设施,这将为公司带来长期利益。

对于 SaaS 行业,资本支出项目更常用于购买物理服务器和设施以支持本地基础设施。相比之下,由于云服务提供商采用的 OpEx 业务模型,OpEx 项目通常被云原生或混合基础设施公司使用。

如果监控不当,运营支出成本可能对 SaaS 公司造成毁灭性打击。在此处了解更多信息。

尽管 CapEx 和 OpEx 业务模型在方法上有所不同,但在使用任何一种模型进行预算规划时都应小心谨慎。对于云项目尤其如此。

如果忽视仔细的规划,在云中运营的企业将面临成本失控和资源浪费的危险。由于过度配置的资源和未优化的集群,许多基于云的公司从他们的云供应商那里经历了非常昂贵的云账单。

那么如何制定 IT 项目预算呢?

第一步是制定预算,从基层仔细考虑开始。需要多少收入?您正在为哪些任务制定预算?是否有您需要达到的里程碑?可以启动哪些新举措?创建一个范围并写下您的团队需要做的所有事情。

典型的 IT 预算细目包括以下内容:

不要忘记,在 Covid 之前或之后:

在您将项目计划提交给最终决策者之前,请考虑由经验丰富的人来执行,他们可以为您提供诚实的反馈。然后,在寻求最终批准之前,花点时间。这是 AT&T 高级全源空间/反空间情报分析师 Charles W. McBride:

“抛开预算,在预算上睡一晚,当你精神焕发时,再次仔细查看每一个数字,问一个简单的问题:我/我们错过了什么?我们都会时不时地错过一些东西,有时是大的,有时是小的。努力花适当的时间来始终仔细检查所有预算假设。你的名声和血压以后会感谢你的。”

在利益相关者审查后,您还可以在最终批准之前让会计师或可信赖的同行查看项目的 IT 预算管理。

预算批准后,就该执行项目了。实施 IT 项目预算与联邦政府的做法不同,在联邦政府中,扣押资金是防止超支的一种规范。对于企业主,您可以根据收入调整业务策略以应对支出增长。

American Recruiting & Consulting Group 的全球转型负责人兼高级项目经理 Neil Woodger 建议企业主“确保你有非常强烈的要求,并且他们得到完全同意和签署。随着项目的推进,范围蔓延是预算的最大消耗者。”

请记住:良好的预算不会限制您公司的支出。相反,它是贵公司战略和战术的财务体现。

完美计划的预算仍需接受审计和重新评估。预算也可以根据需要进行修订,以添加修订,例如收入变化、成本调整或任何其他必要信息。您需要密切关注如何有效地花钱,同时确保企业盈利。

持续的风险评估也是必要的。 “项目经理需要定期重新评估风险并相应地更新预算,”采购主管兼学术研究员 Taoufik Samaka 说。 “有条不紊的风险管理方法将帮助您涵盖与所有项目过程组相关的风险(最重要的是:范围、进度、成本、质量、资源、利益相关者)。”

IT 项目预算实施的重新评估阶段还突出了业务运营中经常被忽视的方面:优化。组织应该投资于优化工具,以提高 IT 项目预算的效率。

从优化的角度来看,更优化的系统会为预算管理留下更多资金,并为进一步的项目留下更多机会。而且,优化工具还可以让企业花更少的钱做更多的事情。

以 Pepperdata Suite 为例。 Pepperdata Suite 为大数据分析堆栈提供可观察性和自动优化。它允许您运行更多应用程序、跟踪您的支出并管理成本。我们的一些客户甚至在基础设施方面节省了 1000 万美元以上。

但 Pepperdata Suite 的另一个好处是吞吐量自动提高了 50%。换句话说,Pepperdata 使企业能够通过更有效地利用集群和知识生成来提高收入增长。

投资者更喜欢看到收入增长,因为稳定或萎缩的收入可能意味着公司将随着时间的推移而萎缩。这就是为什么增加收入和总收入的前景使优化工具成为预算的重要部分。此外,从高效运行的集群中收集的数据为组织提供了竞争优势,从而带来更多创新和更多获取收入的方法。

作者 east
云计算 5月 20,2023

构建现代数据堆栈

由于近 90% 的组织正在执行多云战略以将其数据和分析工作负载迁移到云端,因此“现代数据堆栈”一词继续获得更多关注。

现代数据堆栈是一套技术和应用程序,专门用于将数据汇集到组织中,将其转换为可操作的数据,制定针对该数据采取行动的计划,然后实施该计划。

大多数现代数据堆栈都建立在基于云的服务之上,这些服务由低代码和无代码工具组成,使组织内的各种团队能够探索和使用他们的数据。

继续阅读以了解如何优化您的数据堆栈,并观看来自 Airbnb、Autodesk、Capital One、Meta、T-Mobile、Uber 和其他领先数据驱动公司的行业专家讨论征服现代数据堆栈。

为什么现代数据堆栈在今天很重要

大数据堆栈技术现在几乎为每个组织提供了利用数据的能力,而无需大量的前期成本。传统上,投资数据需要大量时间和资源来构建、管理和维护必要的 IT 基础架构。如今,创建现代数据堆栈不会遇到这样的障碍,并且可以在不到一天的时间内完成。

当组织对其数据堆栈进行现代化改造时,员工的生产力和效率就会提高。因为他们可以分析大量原始数据并获得高度可行的见解,所以组织能够创造和最大限度地提高内部效率,消除运营瓶颈,加速决策制定并推动创新。简而言之,组织能够构建和集中统一的高价值数据资产,该资产易于访问并可用于在整个业务中推动价值。

五阶段构建过程

要构建现代数据堆栈,您需要关注每个阶段,并使用适合您的要求、目标和其他独特需求的工具来填充它。选择集成就绪的工具,因为这将简化您的工作流程。

现代数据堆栈是当今组织的重要组成部分,需要企业接受许多变化,包括采用新兴技术或改变运营模式。执行不力、未优化的云性能管理和其他战略失误可能代价高昂且存在风险。

然而,并非市场上所有的性能优化工具都具有企业级可见性并提供超出表面指标的可观察性。如果没有可见性,企业将面临为其数据堆栈过度配置资源并最终导致比预期更多的云成本的风险。

征服现代数据堆栈

他们说现在可以比几年前更快地从头开始构建数据堆栈。虽然这可能是真的,但处理现代数据堆栈并不是一件容易的事情。好消息是,您有机会向行业专业人士学习如何征服现代数据堆栈。

2022 年数据堆栈峰会包含有关现代数据堆栈各个方面的大量信息。查看它,向大数据技术专家学习,包括我们自己的 Pepperdata 董事会主席 Ash Munshi,以及来自 Airbnb、Autodesk、Capital One、Meta、T-Mobile、Uber 和其他领先公司的专家。

所有虚拟会议均按需提供,并探索数据堆栈技术和其他将震撼我们视野的创新的存储内容!

作者 east
云计算 5月 20,2023

在内部部署到云迁移过程中需要考虑的三个关键事项

许多公司正在应对从本地迁移到云的挑战。虽然这些公司意识到从本地数据基础设施的资本支出模型转变为云的运营支出模型的好处,但他们中的许多人未能充分考虑到这种转变。结果,他们最终超支或未优化性能。

这种漫不经心的前景可能会让您的公司在未来感到头疼。我们的建议:消除云迁移中的猜测。以下是您在上云过程中需要注意的三个方面:

在云迁移过程中,您需要决定的第一件事是什么应该保留在本地,什么要迁移到云端。

如果您是一家大型企业,您可能有一整套复杂的应用程序在各种数据中心运行。也许您对一个数据中心有长期租约,或者您的团队中有一些特定成员坚持要将某个应用程序或系统迁移到云端。无论如何,您应该知道哪些可以移动,哪些最好保留在本地。

一旦你决定,作为从本地到云迁移的基础,你可以进行提升和转移,或者你可以完全重写你的架构以使其成为云原生的(这需要很多工程工作)。您需要利用云供应商提供的某些服务。您甚至可能需要结合使用两者。

其次,您需要决定要使用您选择的云供应商提供的服务。云供应商提供大量服务,虽然很想从每一项服务中获益,但我们建议您只选择必要的服务。使用超出您需要的方式可能会成为维护支持的长期噩梦。

如果您在云迁移过程中不小心,您可能会在不知不觉中放弃在各种服务和提供商之间进行选择的自由。供应商锁定是指你被困在特定供应商的整个堆栈、服务和功能中,如果你不采取措施避免这种情况,很容易陷入困境。为了避免这种情况,您在选择云提供商或他们的服务时必须小心谨慎,因为它确实会限制您以后可以做的事情。通常,公司会选择多云方法来尝试避开这个陷阱。

定价和账单一旦出现,就会让人们在第一次进行本地到云迁移时感到最惊讶。这个问题有两个部分:(1) 现有应用程序的成本,以及 (2) CapEx 到 OpEx 的转变。

当涉及到现有应用程序的成本时,它们可能非常难以计算。很难,但并非不可能。关键是弄清楚您的本地应用程序当前使用什么——多少内存?中央处理器?数据传输量?这就是正确的监控应用程序真正增加价值并让您深入了解您今天运行的内容的地方。

关于 CapEx-OpEx 转变:以前,在 CapEx 模型中,只有组织某些部分的某些人知道成本的真实情况。但是现在,几乎公司内的每个人都可以在一个电子表格和账单中轻松地看到他们的钱去了哪里。

虽然 CapEx 模型由于限制了工程师的能力而让工程师感到沮丧,但它也是一个很好的成本限制器。在云迁移阶段完成后,在 OpEx 模型中,他们没有限制让您的工程师足智多谋,而是在没有限制的情况下开始和扩展。所以他们扩展到大量机器并运行他们能想到的所有测试。接下来你知道,单一灵活性的账单到了,而且是巨大的。

总而言之,请务必记住,OpEx 为您提供的灵活性是一把双刃剑。当您迁移到云端时,设置控制系统和可见性至关重要。

作者 east
Hive 5月 20,2023

Hive 查询示例:您需要了解的内容

如果您在 Hadoop 上使用 Hive,了解 Hive 查询并熟悉一两个 Hive 查询示例是实现有效集群管理的关键。 Hive 查询消耗时间和资源,因此必须通过 Hive 查询调优来提高效率。在本文中,您将了解什么是 Hive 查询、它们如何影响您的集群(正面和负面)、有用的 Hive 查询方法,以及一个好的 Hive 查询示例是什么样的。让我们开始吧。

Hive 查询是来自 Hadoop 数据库的特定信息请求。这些信息请求由 Apache Hive 执行,Apache Hive 是一个在 Hadoop 之上开发的开源数据仓库平台。 Facebook 在编写 Java MapReduce 平台方面创建了 Hive 来执行数据分析、分布式处理和减少工作。

Hive 查询使用一组预定义的代码,这些代码是您的数据库语言的本机代码。然后数据库接收指令,一旦它理解了该指令,就收集并发布所请求的信息。

Hive 是为提高效率而设计的,这就是为什么它的查询需要完美调整和编写良好的原因。您还可以设置依赖项以启用查询的自动计划。这将保证一旦一个动作完成,下一个动作立即开始。

与增加网络带宽相比,提高系统的 RAM 容量和 CPU 能力可以加快 Hive 响应时间。

调优不当的查询会给组织带来重大挫折。其中最大的是错过了 SLA(服务水平协议)。

这些协议表示企业及其客户同意的服务水平,包括性能保证、数据安全、正常运行时间和客户服务标准。因此,如果低效查询导致错过 SLA,结果可能是罚款、退款,或者在某些情况下终止合同。

调整不当的 Hive 查询也会消耗资源。这些会在两个方面影响您的 Hadoop 集群。一:调优不佳的查询会耗尽集群中其他用户或功能的资源。这会导致性能下降和响应时间变慢。二:使用的资源产生成本。由于 Hive 查询调优不佳而造成的资源浪费会增加您的 AWS 账单,让您非常头疼。

低效查询的其他一些影响可能会破坏集群性能、减慢数据库速度和停机时间。

由于低效查询会产生许多负面影响,因此优化查询至关重要。

有一些非常方便的 Hive 查询调优方法,具体取决于您是针对时间还是资源使用进行优化:

适当的 Hive 调整允许您操作尽可能少的数据。一种方法是通过分区,将“键”分配给数据被隔离的子目录。当您的查询需要信息时,您可以定位数据所在的特定子集,这样可以节省您扫描不需要的数据的时间。

分桶类似于分区,尽管它有助于通过扫描更少的数据来提高连接性能。

这有助于最大限度地减少遍历查询过程中各个步骤的数据量,以及在查询状态之间移动所需的时间。

在执行方面,利用执行引擎(如 Tez、Hive on Spark 和 LLAP)可以帮助提高查询性能,而无需低级调优方法。在不需要顺序操作时利用并行执行也是明智的。您的系统可以执行的并行度取决于可用资源和整体数据结构。

此外,它有助于在所有任务之间保持工作的均匀分布,以避免出现偏差。请记住:您的整体查询速度只能与最慢的任务一样快。

最后,当您查看测试时,采样(也称为单元测试)是最好的 Hive 查询调优技术之一。通过获取数据的一个子集并一次运行一千行查询,您可以更快地找到失败、奇怪的结果和错误。这有助于您微调查询以获得更高的准确性和效率。

每个查询还应该自动进行审查和性能测量。这确保他们在晋升到更高级别的环境之前满足最低要求。将不良查询排除在生产之外。

关注公众号“大模型全栈程序员”回复“大数据面试”获取800页左右大数据面试宝典 ,回复“大数据”获取多本大数据电子书

作者 east
chatgpt 5月 20,2023

解决New Bing跳转国内

New Bing为了不让中国大陆使用真是无所不用其极。

访问www.bing.com时总是重定向到cn.bing.com 。刚开始用Mod Header等插件, ,点击 FILTER,选择 Request URL filter  ,
填写下面三个内容(分别是:X-Forwarded-For、8.8.8.8、.*://www.bing.com/.*)并确保都勾选。

后来方法失效了,即使不让跳转,还是会重定向 cn.bing.com过多次导致访问失败。

又升级了方法,用美国vps,通过socket5来访问。用了一段时间之后,用这个美国vps访问,又 跳向国内。不知new bing是用什么算法判定:可能用这个ip的注册账号是中国地区,有时Edge Cookie没清干净,用new bing是使用中文,Edgi用这个ip时Edge语言是中文。

好在有备用美国vps ip,用socket5访问暂时没有跳转到国内。

作者 east
doris 5月 19,2023

doris批量导出表结构java版本实现

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DorisDump {

    private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
    private static final String DB_URL = "jdbc:mysql://localhost:9030/database";
    private static final String USER = "user";
    private static final String PASSWORD = "password";

    public static void main(String[] args) throws SQLException, IOException {
        // Parse command line arguments
        Args args = new Args(args);

        // Connect to the database
        Connection connection = DriverManager.getConnection(DB_URL, USER, PASSWORD);

        // Create a statement
        Statement statement = connection.createStatement();

        // Get the list of tables
        ResultSet tables = statement.executeQuery("show tables;");

        // Create a list to store the create table statements
        List<String> createTableStatements = new ArrayList<>();

        // Iterate over the tables
        while (tables.next()) {
            // Get the name of the table
            String tableName = tables.getString(1);

            // Get the create table statement for the table
            ResultSet createTableStatement = statement.executeQuery("show create table " + tableName + ";");

            // Add the create table statement to the list
            createTableStatements.add(createTableStatement.getString(1));
        }

        // Write the create table statements to a file
        File file = new File("table.txt");
        try (FileWriter fileWriter = new FileWriter(file)) {
            for (String createTableStatement : createTableStatements) {
                fileWriter.write(createTableStatement + "\n");
            }
        }

        // Close the connection
        connection.close();
    }

    private static class Args {

        private String host;
        private int port;
        private String user;
        private String password;
        private String database;

        public Args(String[] args) {
            for (int i = 0; i < args.length; i++) {
                if (args[i].equals("-h")) {
                    host = args[i + 1];
                } else if (args[i].equals("-P")) {
                    port = Integer.parseInt(args[i + 1]);
                } else if (args[i].equals("-u")) {
                    user = args[i + 1];
                } else if (args[i].equals("-p")) {
                    password = args[i + 1];
                } else if (args[i].equals("-d")) {
                    database = args[i + 1];
                }
            }
        }

        public String getHost() {
            return host;
        }

        public int getPort() {
            return port;
        }

        public String getUser() {
            return user;
        }

        public String getPassword() {
            return password;
        }

        public String getDatabase() {
            return database;
        }
    }
}

关注公众号“大模型全栈程序员”回复“大数据面试”获取800页左右大数据面试宝典 ,回复“大数据”获取多本大数据电子书

作者 east
Java 5月 19,2023

mysql导出某个库所有表名和表名的注释并保存在excel

import java.io.File;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;

public class ExportMysqlSchema {

    public static void main(String[] args) throws Exception {
        // 连接mysql数据库
        String url = "jdbc:mysql://localhost:3306/test?user=root&password=root";
        Connection conn = DriverManager.getConnection(url);
        Statement stmt = conn.createStatement();

        // 获取某个库所有表名和表名的注释
        String sql = "SELECT TABLE_NAME, TABLE_COMMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA='test'";
        ResultSet rs = stmt.executeQuery(sql);

        // 创建excel文件
        File file = new File("mysql_schema.xls");
        FileOutputStream fos = new FileOutputStream(file);

        // 创建excel工作簿
        Workbook workbook = new HSSFWorkbook();
        // 创建excel工作表
        Sheet sheet = workbook.createSheet("test");
        // 创建excel表头
        Row header = sheet.createRow(0);
        header.createCell(0).setCellValue("TABLE_NAME");
        header.createCell(1).setCellValue("TABLE_COMMENT");

        // 写入excel数据
        int index = 1; // 行索引
        while (rs.next()) {
            // 获取表名和表名的注释
            String tableName = rs.getString(1);
            String tableComment = rs.getString(2);
            // 创建excel行
            Row row = sheet.createRow(index++);
            // 写入excel单元格
            row.createCell(0).setCellValue(tableName);
            row.createCell(1).setCellValue(tableComment);
        }

        // 保存excel文件
        workbook.write(fos);

        // 关闭资源
        fos.close();
        workbook.close();
        rs.close();
        stmt.close();
        conn.close();
    }
}
作者 east
Kafka 5月 18,2023

2020 年精选:Kafka 优化:四个最佳实践

2020 年不会成为十年来最好的年份之一,但我们可以肯定地说,至少有一件好事发生了:Kafka 优化的四个最佳实践的总结。这篇博文最初发表于 5 月,并迅速成为我们读者的最爱。鉴于最佳实践至今仍然有效,我们想再次强调它们,以圆满结束这一年。阅读并享受它。

阿帕奇卡夫卡很棒。它允许创建易于扩展的实时、高吞吐量、低延迟数据流。优化的 Kafka 性能还带来其他好处,例如抵抗集群内发生的机器/节点故障以及集群上数据和消息的持久化。 Kafka 框架的性能优化应该是重中之重。

但优化是一项复杂的工作。优化您的 Apache Kafka 部署可能是一个挑战,因为分布式架构有很多层,并且可以在这些层内调整参数。

例如: 通常,具有自动数据冗余的高吞吐量发布-订阅 (pub/sub) 模式是一件好事。但是,当您的消费者努力跟上您的数据流,或者如果他们无法阅读消息,因为这些消息在消费者到达它们之前就消失了,那么就需要做一些工作来支持消费应用程序的性能需求。

Kafka 优化是一个广泛的主题,可以非常深入和精细,但这里有一些关键的最佳实践可以帮助您入门:

这听起来可能非常明显,但您会惊讶于有多少人使用旧版本的 Kafka。一个非常简单的 Kafka 优化举措是升级并使用最新版本的平台。您必须确定您的客户是否使用旧版本的 Kafka(0.10 或更早版本)。如果是,他们应该立即升级。

最新版本的 Kafka(版本 0.8x)附带 Apache ZooKeeper,主要用于协调消费者群体。使用过时版本的 Kafka 会导致重新平衡运行时间过长以及重新平衡算法失败。

优化 Apache Kafka 部署是优化平台堆栈层的练习。分区是吞吐量性能所基于的存储层。每个分区的数据速率是消息的平均大小乘以每秒消息数。简而言之,它是数据通过分区的速率。所需的吞吐率决定了分区的目标架构。

解决方案架构师希望每个分区都支持相似的数据量和吞吐率。实际上,数据速率会随着时间的推移而变化,生产者和消费者的原始数量也会随之变化。

可变性带来的性能挑战是消费者滞后的可能性,也就是消费者读取率落后于生产者写入率。随着 Kafka 环境的扩展,随机分区是一种有效的方法,可确保您不会在不必要地尝试将静态定义应用于移动性能目标时引入人为瓶颈。

分区领导通常是通过由 Zookeeper 维护的元数据进行简单选举的产物。然而,领导选举并没有考虑到各个分区的性能。根据您的 Kafka 发行版,可以利用专有的平衡器,但由于缺乏此类工具,随机分区提供了最不干涉的路径来平衡性能。

外卖?在写入主题时坚持随机分区,除非体系结构要求另有要求。

在较旧的 Kafka 版本中,参数 receive.buffer.bytes 默认设置为 64kB。在较新的 Kafka 版本中,参数为 socket.receive.buffer.bytes,默认为 100kB。

这对 Kafka 优化意味着什么?对于高吞吐量环境,这些默认值太小,因此不够用。当代理和消费者之间的网络带宽延迟乘积大于 LAN(局域网)时,情况就很明显了。

如果您的网络以 10 Gbps 或更高的速度运行并且延迟为 1 毫秒或更长,建议您将套接字缓冲区调整为 8 或 16 MB。如果内存有问题,请考虑 1 MB。

优化 Apache Kafka 部署是一项持续的工作,但这五个最佳实践应该是一个坚实的开始。上面提到的性能优化技巧只是用户可以实施以提高 Kafka 性能的一些优化方法。 Kafka 越来越受到应用程序开发人员、IT 专业人员和数据管理人员的欢迎。并且有充分的理由。查看我们的其他资源,其中详细讨论了 Kafka 应用于应用程序开发和数据管理的特定领域时的最佳实践。

已经在使用 Kafka 了吗?使用 Pepperdata Streaming Spotlight 监控和改进其性能。

回顾一下,我们建议您升级到最新版本的 Kafka。这是一件小事,但可以发挥重要作用。接下来,是确保您了解数据吞吐率。除非架构需求另有要求,否则我们建议您在写入主题时选择随机分区。如果你想实现高速摄取,调整消费者套接字缓冲区。我们希望您喜欢这篇 2020 年最佳博文,其中重点介绍了我们为 Kafka 优化推荐的最佳实践。

作者 east

上一 1 … 8 9 10 … 19 下一个

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。回复”chatgpt”获取免注册可用chatgpt。回复“大数据”获取多本大数据电子书

标签

AIGC AI创作 bert chatgpt github GPT-3 gpt3 GTP-3 hive mysql O2O tensorflow UI控件 不含后台 交流 共享经济 出行 图像 地图定位 外卖 多媒体 娱乐 小程序 布局 带后台完整项目 开源项目 搜索 支付 效率 教育 日历 机器学习 深度学习 物流 用户系统 电商 画图 画布(canvas) 社交 签到 联网 读书 资讯 阅读 预订

官方QQ群

小程序开发群:74052405

大数据开发群: 952493060

近期文章

  • 如何在Chrome中设置启动时自动打开多个默认网页
  • spark内存溢出怎样区分是软件还是代码原因
  • MQTT完全解析和实践
  • 解决运行Selenium报错:self.driver = webdriver.Chrome(service=service) TypeError: __init__() got an unexpected keyword argument ‘service’
  • python 3.6使用mysql-connector-python报错:SyntaxError: future feature annotations is not defined
  • 详解Python当中的pip常用命令
  • AUTOSAR如何在多个供应商交付的配置中避免ARXML不兼容?
  • C++thread pool(线程池)设计应关注哪些扩展性问题?
  • 各类MCAL(Microcontroller Abstraction Layer)如何与AUTOSAR工具链解耦?
  • 如何设计AUTOSAR中的“域控制器”以支持未来扩展?

文章归档

  • 2025年7月
  • 2025年6月
  • 2025年5月
  • 2025年4月
  • 2025年3月
  • 2025年2月
  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年1月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年7月
  • 2018年6月

分类目录

  • Android (73)
  • bug清单 (79)
  • C++ (34)
  • Fuchsia (15)
  • php (4)
  • python (45)
  • sklearn (1)
  • 云计算 (20)
  • 人工智能 (61)
    • chatgpt (21)
      • 提示词 (6)
    • Keras (1)
    • Tensorflow (3)
    • 大模型 (1)
    • 智能体 (4)
    • 深度学习 (14)
  • 储能 (44)
  • 前端 (5)
  • 大数据开发 (491)
    • CDH (6)
    • datax (4)
    • doris (31)
    • Elasticsearch (15)
    • Flink (78)
    • flume (7)
    • Hadoop (19)
    • Hbase (23)
    • Hive (41)
    • Impala (2)
    • Java (71)
    • Kafka (10)
    • neo4j (5)
    • shardingsphere (6)
    • solr (5)
    • Spark (100)
    • spring (11)
    • 数据仓库 (9)
    • 数据挖掘 (7)
    • 海豚调度器 (10)
    • 运维 (34)
      • Docker (3)
  • 小游戏代码 (1)
  • 小程序代码 (139)
    • O2O (16)
    • UI控件 (5)
    • 互联网类 (23)
    • 企业类 (6)
    • 地图定位 (9)
    • 多媒体 (6)
    • 工具类 (25)
    • 电商类 (22)
    • 社交 (7)
    • 行业软件 (7)
    • 资讯读书 (11)
  • 嵌入式 (71)
    • autosar (63)
    • RTOS (1)
    • 总线 (1)
  • 开发博客 (16)
    • Harmony (9)
  • 技术架构 (6)
  • 数据库 (32)
    • mongodb (1)
    • mysql (13)
    • pgsql (2)
    • redis (1)
    • tdengine (4)
  • 未分类 (7)
  • 程序员网赚 (20)
    • 广告联盟 (3)
    • 私域流量 (5)
    • 自媒体 (5)
  • 量化投资 (4)
  • 面试 (14)

功能

  • 登录
  • 文章RSS
  • 评论RSS
  • WordPress.org

All Rights Reserved by Gitweixin.本站收集网友上传代码, 如有侵犯版权,请发邮件联系yiyuyos@gmail.com删除.