目次
概述
什么是Spark
Spark与Hadoop的对比
Spark与Hadoop的结合
Spark的适用场景
运行模式
Spark生态系统
在业界的使用
Spark核心概念
Resilient Distributed Dataset (RDD)弹性分布数据集
RDD的生成
RDD的转换与操作
Lineage(血统)
容错
资源管理与作业调度
编程接口
Scala
Java
Python
使用示例
Standalone模式
yarn模式
使用Spark-shell
编写Driver程序
参考资料
ホームページ データベース mysql チュートリアル Spark:一个高效的分布式计算系统

Spark:一个高效的分布式计算系统

Jun 07, 2016 pm 04:32 PM
sp spark 配布された 概要 システム 計算する 効率的

概述 什么是Spark Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写H

概述

什么是Spark

  • Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。其架构如下图所示:spark-framwork

Spark与Hadoop的对比

  • Spark的中间数据放到内存中,对于迭代运算效率更高。
    • Spark更适合于迭代运算比较多的ML和DM运算。因为在Spark里面,有RDD的抽象概念。
  • Spark比Hadoop更通用。
    • Spark提供的数据集操作类型有很多种,不像Hadoop只提供了Map和Reduce两种操作。比如map, filter, flatMap, sample, groupByKey, reduceByKey, union, join, cogroup, mapValues, sort,partionBy等多种操作类型,Spark把这些操作称为Transformations。同时还提供Count, collect, reduce, lookup, save等多种actions操作。
    • 这些多种多样的数据集操作类型,给给开发上层应用的用户提供了方便。各个处理节点之间的通信模型不再像Hadoop那样就是唯一的Data Shuffle一种模式。用户可以命名,物化,控制中间结果的存储、分区等。可以说编程模型比Hadoop更灵活。
    • 不过由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。
  • 容错性。
    • 在分布式数据集计算时通过checkpoint来实现容错,而checkpoint有两种方式,一个是checkpoint data,一个是logging the updates。用户可以控制采用哪种方式来实现容错。
  • 可用性。
    • Spark通过提供丰富的Scala, Java,Python API及交互式Shell来提高可用性。

Spark与Hadoop的结合

  • Spark可以直接对HDFS进行数据的读写,同样支持Spark on YARN。Spark可以与MapReduce运行于同集群中,共享存储资源与计算,数据仓库Shark实现上借用Hive,几乎与Hive完全兼容。

Spark的适用场景

  • Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小
  • 由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。
  • 总的来说Spark的适用面比较广泛且比较通用。

运行模式

  • 本地模式
  • Standalone模式
  • Mesoes模式
  • yarn模式

Spark生态系统

  • Shark ( Hive on Spark): Shark基本上就是在Spark的框架基础上提供和Hive一样的H iveQL命令接口,为了最大程度的保持和Hive的兼容性,Shark使用了Hive的API来实现query Parsing和 Logic Plan generation,最后的PhysicalPlan execution阶段用Spark代替Hadoop MapReduce。通过配置Shark参数,Shark可以自动在内存中缓存特定的RDD,实现数据重用,进而加快特定数据集的检索。同时,Shark通过UDF用户自定义函数实现特定的数据分析学习算法,使得SQL数据查询和运算分析能结合在一起,最大化RDD的重复使用。
  • Spark streaming: 构建在Spark上处理Stream数据的框架,基本的原理是将Stream数据分成小的时间片断(几秒),以类似batch批量处理的方式来处理这小部分数据。Spark Streaming构建在Spark上,一方面是因为Spark的低延迟执行引擎(100ms+)可以用于实时计算,另一方面相比基于Record的其它处理框架(如Storm),RDD数据集更容易做高效的容错处理。此外小批量处理的方式使得它可以同时兼容批量和实时数据处理的逻辑和算法。方便了一些需要历史数据和实时数据联合分析的特定应用场合。
  • Bagel: Pregel on Spark,可以用Spark进行图计算,这是个非常有用的小项目。Bagel自带了一个例子,实现了Google的PageRank算法。

在业界的使用

  • Spark项目在2009年启动,2010年开源, 现在使用的有:Berkeley, Princeton, Klout, Foursquare, Conviva, Quantifind, Yahoo! Research & others, 淘宝等,豆瓣也在使用Spark的python克隆版Dpark。

Spark核心概念

Resilient Distributed Dataset (RDD)弹性分布数据集

  • RDD是Spark的最基本抽象,是对分布式内存的抽象使用,实现了以操作本地集合的方式来操作分布式数据集的抽象实现。RDD是Spark最核心的东西,它表示已被分区,不可变的并能够被并行操作的数据集合,不同的数据集格式对应不同的RDD实现。RDD必须是可序列化的。RDD可以cache到内存中,每次对RDD数据集的操作之后的结果,都可以存放到内存中,下一个操作可以直接从内存中输入,省去了MapReduce大量的磁盘IO操作。这对于迭代运算比较常见的机器学习算法, 交互式数据挖掘来说,效率提升比较大。
  • RDD的特点:

    1. 它是在集群节点上的不可变的、已分区的集合对象。
    2. 通过并行转换的方式来创建如(map, filter, join, etc)。
    3. 失败自动重建。
    4. 可以控制存储级别(内存、磁盘等)来进行重用。
    5. 必须是可序列化的。
    6. 是静态类型的。
  • RDD的好处

    1. RDD只能从持久存储或通过Transformations操作产生,相比于分布式共享内存(DSM)可以更高效实现容错,对于丢失部分数据分区只需根据它的lineage就可重新计算出来,而不需要做特定的Checkpoint。
    2. RDD的不变性,可以实现类Hadoop MapReduce的推测式执行。
    3. RDD的数据分区特性,可以通过数据的本地性来提高性能,这与Hadoop MapReduce是一样的。
    4. RDD都是可序列化的,在内存不足时可自动降级为磁盘存储,把RDD存储于磁盘上,这时性能会有大的下降但不会差于现在的MapReduce。
  • RDD的存储与分区

    1. 用户可以选择不同的存储级别存储RDD以便重用。
    2. 当前RDD默认是存储于内存,但当内存不足时,RDD会spill到disk。
    3. RDD在需要进行分区把数据分布于集群中时会根据每条记录Key进行分区(如Hash 分区),以此保证两个数据集在Join时能高效。
  • RDD的内部表示
    在RDD的内部实现中每个RDD都可以使用5个方面的特性来表示:

    1. 分区列表(数据块列表)
    2. 计算每个分片的函数(根据父RDD计算出此RDD)
    3. 对父RDD的依赖列表
    4. 对key-value RDD的Partitioner【可选】
    5. 每个数据分片的预定义地址列表(如HDFS上的数据块的地址)【可选】
  • RDD的存储级别
    RDD根据useDisk、useMemory、deserialized、replication四个参数的组合提供了11种存储级别:

    val NONE = new StorageLevel(false, false, false) 
        val DISK_ONLY = new StorageLevel(true, false, false) 
        val DISK_ONLY_2 = new StorageLevel(true, false, false, 2) 
        val MEMORY_ONLY = new StorageLevel(false, true, true) 
        val MEMORY_ONLY_2 = new StorageLevel(false, true, true, 2) 
        val MEMORY_ONLY_SER = new StorageLevel(false, true, false) 
        val MEMORY_ONLY_SER_2 = new StorageLevel(false, true, false, 2) 
        val MEMORY_AND_DISK = new StorageLevel(true, true, true) 
        val MEMORY_AND_DISK_2 = new StorageLevel(true, true, true, 2) 
        val MEMORY_AND_DISK_SER = new StorageLevel(true, true, false) 
        val MEMORY_AND_DISK_SER_2 = new StorageLevel(true, true, false, 2)
    ログイン後にコピー

  • RDD定义了各种操作,不同类型的数据由不同的RDD类抽象表示,不同的操作也由RDD进行抽实现。

RDD的生成

  • RDD有两种创建方式:
    1、从Hadoop文件系统(或与Hadoop兼容的其它存储系统)输入(例如HDFS)创建。
    2、从父RDD转换得到新RDD。
  • 下面来看一从Hadoop文件系统生成RDD的方式,如:val file = spark.textFile("hdfs://..."),file变量就是RDD(实际是HadoopRDD实例),生成的它的核心代码如下:

    // SparkContext根据文件/目录及可选的分片数创建RDD, 这里我们可以看到Spark与Hadoop MapReduce很像 
        // 需要InputFormat, Key、Value的类型,其实Spark使用的Hadoop的InputFormat, Writable类型。 
        def textFile(path: String, minSplits: Int = defaultMinSplits): RDD[String] = { 
            hadoopFile(path, classOf[TextInputFormat], classOf[LongWritable], 
            classOf[Text], minSplits) .map(pair => pair._2.toString) }
        // 根据Hadoop配置,及InputFormat等创建HadoopRDD  
        new HadoopRDD(this, conf, inputFormatClass, keyClass, valueClass, minSplits)
    ログイン後にコピー

  • 对RDD进行计算时,RDD从HDFS读取数据时与Hadoop MapReduce几乎一样的:

    // 根据hadoop配置和分片从InputFormat中获取RecordReader进行数据的读取。 
        reader = fmt.getRecordReader(split.inputSplit.value, conf, Reporter.NULL)
        val key: K = reader.createKey()
        val value: V = reader.createValue()
        //使用Hadoop MapReduce的RecordReader读取数据,每个Key、Value对以元组返回。
        override def getNext() = {
        try {
          finished = !reader.next(key, value)
        } catch {
          case eof: EOFException =>
            finished = true
        }
          (key, value)
        }
    ログイン後にコピー

RDD的转换与操作

  • 对于RDD可以有两种计算方式:转换(返回值还是一个RDD)与操作(返回值不是一个RDD)。
  • 转换(Transformations) (如:map, filter, groupBy, join等),Transformations操作是Lazy的,也就是说从一个RDD转换生成另一个RDD的操作不是马上执行,Spark在遇到Transformations操作时只会记录需要这样的操作,并不会去执行,需要等到有Actions操作的时候才会真正启动计算过程进行计算。
  • 操作(Actions) (如:count, collect, save等),Actions操作会返回结果或把RDD数据写到存储系统中。Actions是触发Spark启动计算的动因。
  • 下面使用一个例子来示例说明Transformations与Actions在Spark的使用。

    val sc = new SparkContext(master, "Example", System.getenv("SPARK_HOME"), 
            Seq(System.getenv("SPARK_TEST_JAR")))
        val rdd_A = sc.textFile(hdfs://.....)
        val rdd_B = rdd_A.flatMap((line => line.split("\\s+"))).map(word => (word, 1))
        val rdd_C = sc.textFile(hdfs://.....)
        val rdd_D = rdd_C.map(line => (line.substring(10), 1))
        val rdd_E = rdd_D.reduceByKey((a, b) => a + b)
        val rdd_F = rdd_B.jion(rdd_E)
        rdd_F.saveAsSequenceFile(hdfs://....)
    ログイン後にコピー

SparkTA11

Lineage(血统)

  • 利用内存加快数据加载,在众多的其它的In-Memory类数据库或Cache类系统中也有实现,Spark的主要区别在于它处理分布式运算环境下的数据容错性(节点实效/数据丢失)问题时采用的方案。为了保证RDD中数据的鲁棒性,RDD数据集通过所谓的血统关系(Lineage)记住了它是如何从其它RDD中演变过来的。相比其它系统的细颗粒度的内存数据更新级别的备份或者LOG机制,RDD的Lineage记录的是粗颗粒度的特定数据转换(Transformation)操作(filter, map, join etc.)行为。当这个RDD的部分分区数据丢失时,它可以通过Lineage获取足够的信息来重新运算和恢复丢失的数据分区。这种粗颗粒的数据模型,限制了Spark的运用场合,但同时相比细颗粒度的数据模型,也带来了性能的提升。
  • RDD在Lineage依赖方面分为两种Narrow Dependencies与Wide Dependencies用来解决数据容错的高效性。Narrow Dependencies是指父RDD的每一个分区最多被一个子RDD的分区所用,表现为一个父RDD的分区对应于一个子RDD的分区或多个父RDD的分区对应于一个子RDD的分区,也就是说一个父RDD的一个分区不可能对应一个子RDD的多个分区。Wide Dependencies是指子RDD的分区依赖于父RDD的多个分区或所有分区,也就是说存在一个父RDD的一个分区对应一个子RDD的多个分区。对与Wide Dependencies,这种计算的输入和输出在不同的节点上,lineage方法对与输入节点完好,而输出节点宕机时,通过重新计算,这种情况下,这种方法容错是有效的,否则无效,因为无法重试,需要向上其祖先追溯看是否可以重试(这就是lineage,血统的意思),Narrow Dependencies对于数据的重算开销要远小于Wide Dependencies的数据重算开销。

容错

  • 在RDD计算,通过checkpint进行容错,做checkpoint有两种方式,一个是checkpoint data,一个是logging the updates。用户可以控制采用哪种方式来实现容错,默认是logging the updates方式,通过记录跟踪所有生成RDD的转换(transformations)也就是记录每个RDD的lineage(血统)来重新计算生成丢失的分区数据。

资源管理与作业调度

  • Spark对于资源管理与作业调度可以使用Standalone(独立模式),Apache Mesos及Hadoop YARN来实现。 Spark on Yarn在Spark0.6时引用,但真正可用是在现在的branch-0.8版本。Spark on Yarn遵循YARN的官方规范实现,得益于Spark天生支持多种Scheduler和Executor的良好设计,对YARN的支持也就非常容易,Spark on Yarn的大致框架图。 Spark架构图

  • 让Spark运行于YARN上与Hadoop共用集群资源可以提高资源利用率。


编程接口

  • Spark通过与编程语言集成的方式暴露RDD的操作,类似于DryadLINQ和FlumeJava,每个数据集都表示为RDD对象,对数据集的操作就表示成对RDD对象的操作。Spark主要的编程语言是Scala,选择Scala是因为它的简洁性(Scala可以很方便在交互式下使用)和性能(JVM上的静态强类型语言)。
  • Spark和Hadoop MapReduce类似,由Master(类似于MapReduce的Jobtracker)和Workers(Spark的Slave工作节点)组成。用户编写的Spark程序被称为Driver程序,Dirver程序会连接master并定义了对各RDD的转换与操作,而对RDD的转换与操作通过Scala闭包(字面量函数)来表示,Scala使用Java对象来表示闭包且都是可序列化的,以此把对RDD的闭包操作发送到各Workers节点。 Workers存储着数据分块和享有集群内存,是运行在工作节点上的守护进程,当它收到对RDD的操作时,根据数据分片信息进行本地化数据操作,生成新的数据分片、返回结果或把RDD写入存储系统。 runtime

Scala

  • Spark使用Scala开发,默认使用Scala作为编程语言。编写Spark程序比编写Hadoop MapReduce程序要简单的多,SparK提供了Spark-Shell,可以在Spark-Shell测试程序。写SparK程序的一般步骤就是创建或使用(SparkContext)实例,使用SparkContext创建RDD,然后就是对RDD进行操作。如:

    val sc = new SparkContext(master, appName, [sparkHome], [jars]) 
        val textFile = sc.textFile("hdfs://.....") 
        textFile.map(....).filter(.....).....
    ログイン後にコピー

Java

  • Spark支持Java编程,但对于使用Java就没有了Spark-Shell这样方便的工具,其它与Scala编程是一样的,因为都是JVM上的语言,Scala与Java可以互操作,Java编程接口其实就是对Scala的封装。如:

    JavaSparkContext sc = new JavaSparkContext(...);  
        JavaRDD lines = ctx.textFile("hdfs://..."); 
        JavaRDD words = lines.flatMap( 
          new FlatMapFunction() { 
             public Iterable call(String s) { 
                return Arrays.asList(s.split(" ")); 
             } 
           } 
        );
    ログイン後にコピー

Python

  • 现在Spark也提供了Python编程接口,Spark使用py4j来实现python与java的互操作,从而实现使用python编写Spark程序。Spark也同样提供了pyspark,一个Spark的python shell,可以以交互式的方式使用Python编写Spark程序。 如:

    from pyspark import SparkContext 
        sc = SparkContext("local", "Job Name", pyFiles=['MyFile.py', 'lib.zip', 'app.egg']) 
        words = sc.textFile("/usr/share/dict/words") 
        words.filter(lambda w: w.startswith("spar")).take(5)
    ログイン後にコピー


使用示例

Standalone模式

  • 为方便Spark的推广使用,Spark提供了Standalone模式,Spark一开始就设计运行于Apache Mesos资源管理框架上,这是非常好的设计,但是却带了部署测试的复杂性。为了让Spark能更方便的部署和尝试,Spark因此提供了Standalone运行模式,它由一个Spark Master和多个Spark worker组成,与Hadoop MapReduce1很相似,就连集群启动方式都几乎是一样。
  • 以Standalone模式运行Spark集群

    • 下载Scala2.9.3,并配置SCALA_HOME
    • 下载Spark代码(可以使用源码编译也可以下载编译好的版本)这里下载 编译好的版本(http://spark-project.org/download/spark-0.7.3-prebuilt-cdh4.tgz
    • 解压spark-0.7.3-prebuilt-cdh4.tgz安装包
    • 修改配置(conf/*) slaves: 配置工作节点的主机名 spark-env.sh:配置环境变量。

      SCALA_HOME=/home/spark/scala-2.9.3 
      JAVA_HOME=/home/spark/jdk1.6.0_45 
      SPARK_MASTER_IP=spark1             
      SPARK_MASTER_PORT=30111 
      SPARK_MASTER_WEBUI_PORT=30118 
      SPARK_WORKER_CORES=2 SPARK_WORKER_MEMORY=4g 
      SPARK_WORKER_PORT=30333 
      SPARK_WORKER_WEBUI_PORT=30119 
      SPARK_WORKER_INSTANCES=1
      ログイン後にコピー

    • 把Hadoop配置copy到conf目录下

    • 在master主机上对其它机器做ssh无密码登录

    • 把配置好的Spark程序使用scp copy到其它机器

    • 在master启动集群

      $SPARK_HOME/start-all.sh
      ログイン後にコピー

yarn模式

  • Spark-shell现在还不支持Yarn模式,使用Yarn模式运行,需要把Spark程序全部打包成一个jar包提交到Yarn上运行。目录只有branch-0.8版本才真正支持Yarn。
  • 以Yarn模式运行Spark

    • 下载Spark代码.

      git clone git://github.com/mesos/spark
      ログイン後にコピー

    • 切换到branch-0.8

      cd spark 
      git checkout -b yarn --track origin/yarn
      ログイン後にコピー

    • 使用sbt编译Spark并

      $SPARK_HOME/sbt/sbt 
      > package 
      > assembly
      ログイン後にコピー

    • 把Hadoop yarn配置copy到conf目录下

    • 运行测试

      SPARK_JAR=./core/target/scala-2.9.3/spark-core-assembly-0.8.0-SNAPSHOT.jar \ 
      ./run spark.deploy.yarn.Client --jar examples/target/scala-2.9.3/ \ 
      --class spark.examples.SparkPi --args yarn-standalone
      ログイン後にコピー

使用Spark-shell

  • Spark-shell使用很简单,当Spark以Standalon模式运行后,使用$SPARK_HOME/spark-shell进入shell即可,在Spark-shell中SparkContext已经创建好了,实例名为sc可以直接使用,还有一个需要注意的是,在Standalone模式下,Spark默认使用的调度器的FIFO调度器而不是公平调度,而Spark-shell作为一个Spark程序一直运行在Spark上,其它的Spark程序就只能排队等待,也就是说同一时间只能有一个Spark-shell在运行。
  • 在Spark-shell上写程序非常简单,就像在Scala Shell上写程序一样。

    scala> val textFile = sc.textFile("hdfs://hadoop1:2323/user/data") 
        textFile: spark.RDD[String] = spark.MappedRDD@2ee9b6e3
        scala> textFile.count() // Number of items in this RDD
        res0: Long = 21374
        scala> textFile.first() // First item in this RDD
        res1: String = # Spark
    ログイン後にコピー

编写Driver程序

  • 在Spark中Spark程序称为Driver程序,编写Driver程序很简单几乎与在Spark-shell上写程序是一样的,不同的地方就是SparkContext需要自己创建。如WorkCount程序如下:

    import spark.SparkContext
    import SparkContext._
    object WordCount {
      def main(args: Array[String]) {
        if (args.length ==0 ){
          println("usage is org.test.WordCount ")
        }
        println("the args: ")
        args.foreach(println)
        val hdfsPath = "hdfs://hadoop1:8020"
        // create the SparkContext, args(0)由yarn传入appMaster地址
        val sc = new SparkContext(args(0), "WrodCount",
        System.getenv("SPARK_HOME"), Seq(System.getenv("SPARK_TEST_JAR")))
        val textFile = sc.textFile(hdfsPath + args(1))
        val result = textFile.flatMap(line => line.split("\\s+"))
            .map(word => (word, 1)).reduceByKey(_ + _)
        result.saveAsTextFile(hdfsPath + args(2))
      }
    }
    ログイン後にコピー

参考资料

  • Spark On Yarn:小火花照亮大数据
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Word文書で足し算、引き算、掛け算、割り算を計算する方法 Word文書で足し算、引き算、掛け算、割り算を計算する方法 Mar 19, 2024 pm 08:13 PM

WORD は強力なワード プロセッサです。Word を使用してさまざまなテキストを編集できます。Excel の表では、足し算、引き算、乗算の計算方法をマスターしました。そのため、Word の表で数値の足し算を計算する必要がある場合は、乗数を引くにはどうすればよいですか? 計算には電卓しか使用できませんか?答えはもちろん「いいえ」です。WORD でも実行できます。今日は、Word文書の表で加算、減算、乗算、除算などの基本的な演算を数式を使って計算する方法を説明しますので、一緒に学びましょう。そこで、今日は、WORD 文書で加算、減算、乗算、除算を計算する方法を詳しく説明します。ステップ 1: WORD を開き、ツールバーの [挿入] の下にある [表] をクリックし、ドロップダウン メニューに表を挿入します。

CUDA の汎用行列乗算: 入門から習熟まで! CUDA の汎用行列乗算: 入門から習熟まで! Mar 25, 2024 pm 12:30 PM

General Matrix Multiplication (GEMM) は、多くのアプリケーションやアルゴリズムの重要な部分であり、コンピューター ハードウェアのパフォーマンスを評価するための重要な指標の 1 つでもあります。 GEMM の実装に関する徹底的な調査と最適化は、ハイ パフォーマンス コンピューティングとソフトウェア システムとハードウェア システムの関係をより深く理解するのに役立ちます。コンピューター サイエンスでは、GEMM を効果的に最適化すると、計算速度が向上し、リソースが節約されます。これは、コンピューター システムの全体的なパフォーマンスを向上させるために非常に重要です。 GEMM の動作原理と最適化方法を深く理解することは、最新のコンピューティング ハードウェアの可能性をより有効に活用し、さまざまな複雑なコンピューティング タスクに対してより効率的なソリューションを提供するのに役立ちます。 GEMMのパフォーマンスを最適化することで

ファーウェイのQiankun ADS3.0インテリジェント運転システムは8月に発売され、初めてXiangjie S9に搭載される ファーウェイのQiankun ADS3.0インテリジェント運転システムは8月に発売され、初めてXiangjie S9に搭載される Jul 30, 2024 pm 02:17 PM

7月29日、AITO Wenjieの40万台目の新車のロールオフ式典に、ファーウェイの常務取締役、ターミナルBG会長、スマートカーソリューションBU会長のYu Chengdong氏が出席し、スピーチを行い、Wenjieシリーズモデルの発売を発表した。 8月にHuawei Qiankun ADS 3.0バージョンが発売され、8月から9月にかけて順次アップグレードが行われる予定です。 8月6日に発売されるXiangjie S9には、ファーウェイのADS3.0インテリジェント運転システムが初搭載される。 LiDARの支援により、Huawei Qiankun ADS3.0バージョンはインテリジェント運転機能を大幅に向上させ、エンドツーエンドの統合機能を備え、GOD(一般障害物識別)/PDP(予測)の新しいエンドツーエンドアーキテクチャを採用します。意思決定と制御)、駐車スペースから駐車スペースまでのスマート運転のNCA機能の提供、CAS3.0のアップグレード

Apple 16 システムのどのバージョンが最適ですか? Apple 16 システムのどのバージョンが最適ですか? Mar 08, 2024 pm 05:16 PM

Apple 16 システムの最適なバージョンは iOS16.1.4 です。iOS16 システムの最適なバージョンは人によって異なります。日常の使用体験における追加と改善も多くのユーザーから賞賛されています。 Apple 16 システムの最適なバージョンはどれですか? 回答: iOS16.1.4 iOS 16 システムの最適なバージョンは人によって異なる場合があります。公開情報によると、2022 年にリリースされた iOS16 は非常に安定していてパフォーマンスの高いバージョンであると考えられており、ユーザーはその全体的なエクスペリエンスに非常に満足しています。また、iOS16では新機能の追加や日常の使用感の向上も多くのユーザーからご好評をいただいております。特に最新のバッテリー寿命、信号性能、加熱制御に関して、ユーザーからのフィードバックは比較的好評です。ただし、iPhone14を考慮すると、

常に新しい! Huawei Mate60シリーズがHarmonyOS 4.2にアップグレード:AIクラウドの強化、Xiaoyi方言はとても使いやすい 常に新しい! Huawei Mate60シリーズがHarmonyOS 4.2にアップグレード:AIクラウドの強化、Xiaoyi方言はとても使いやすい Jun 02, 2024 pm 02:58 PM

4月11日、ファーウェイはHarmonyOS 4.2 100台のアップグレード計画を初めて正式に発表し、今回は携帯電話、タブレット、時計、ヘッドフォン、スマートスクリーンなどのデバイスを含む180台以上のデバイスがアップグレードに参加する予定だ。先月、HarmonyOS4.2 100台アップグレード計画の着実な進捗に伴い、Huawei Pocket2、Huawei MateX5シリーズ、nova12シリーズ、Huawei Puraシリーズなどの多くの人気モデルもアップグレードと適応を開始しました。 HarmonyOS によってもたらされる共通の、そして多くの場合新しい体験を楽しむことができる Huawei モデルのユーザーが増えることになります。ユーザーのフィードバックから判断すると、HarmonyOS4.2にアップグレードした後、Huawei Mate60シリーズモデルのエクスペリエンスがあらゆる面で向上しました。特にファーウェイM

Cドライブの空き容量が少なくなっています!効率的な掃除方法5つを公開! Cドライブの空き容量が少なくなっています!効率的な掃除方法5つを公開! Mar 26, 2024 am 08:51 AM

Cドライブの空き容量が少なくなっています!効率的な掃除方法5つを公開!コンピュータを使用する過程で、多くのユーザーは C ドライブの空き容量が不足する状況に遭遇することがありますが、特に大量のファイルを保存またはインストールした後は、C ドライブの空き容量が急速に減少し、パフォーマンスやパフォーマンスに影響を及ぼします。コンピューターの実行速度。現時点では、Cドライブをクリーンアップする必要があります。では、Cドライブを効率的にクリーンアップするにはどうすればよいでしょうか?次に、この記事では、Cドライブの容量不足の問題を簡単に解決できる5つの効率的なクリーニング方法を紹介します。 1. 一時ファイルをクリーンアップする. 一時ファイルは、コンピュータの実行中に生成される一時ファイルです。

Linux と Windows システムにおける cmd コマンドの相違点と類似点 Linux と Windows システムにおける cmd コマンドの相違点と類似点 Mar 15, 2024 am 08:12 AM

Linux と Windows は 2 つの一般的なオペレーティング システムで、それぞれオープン ソースの Linux システムと商用 Windows システムを表します。どちらのオペレーティング システムにも、ユーザーがオペレーティング システムと対話するためのコマンド ライン インターフェイスがあります。 Linux システムでは、ユーザーはシェル コマンド ラインを使用しますが、Windows システムでは、cmd コマンド ラインを使用します。 Linux システムのシェル コマンド ラインは、ほぼすべてのシステム管理タスクを完了できる非常に強力なツールです。

Oracleデータベースのシステム日付を変更する方法の詳細な説明 Oracleデータベースのシステム日付を変更する方法の詳細な説明 Mar 09, 2024 am 10:21 AM

Oracle データベースでのシステム日付の変更方法の詳細説明 Oracle データベースでのシステム日付の変更方法は、主に NLS_DATE_FORMAT パラメータの変更と SYSDATE 関数の使用です。この記事では、読者が Oracle データベースのシステム日付を変更する操作をよりよく理解し、習得できるように、これら 2 つの方法とその具体的なコード例を詳しく紹介します。 1. NLS_DATE_FORMAT パラメータメソッドの変更 NLS_DATE_FORMAT は Oracle データです

See all articles