「ビッグ データ クラスターの構築と使用」の背景知識: ビッグ データ Hadoop エコシステムの概要

目次

1. Hadoop の概要

2. Hadoopの動作モード

1.スタンドアロンモード

2. 擬似分散モード

3. 完全分散モード

3. Hadoop エコシステムのコンポーネント

1.HDFS

2. マップリデュース

3. 糸

4. ハイブ

5.豚

6.HBase

7.Hカタログ

8. アブロ

9.倹約

10. ドリル

11.象使い

12. スクープ

13. フリューム

14. アンバリ

15. 動物園の飼育員

4. Hadoopの長所と短所

5、Hadoop ラーニング パス


1. Hadoop の概要

hadoop = MapReduce+HDFS (hadoop ファイル システム)

さらに詳しい説明:

MapReduce はプロジェクト、HDFS は別のプロジェクトであり、これらが Hadoop を構成します。

実は、この 2 つのプロジェクトは Hadoop に関連しており、たとえば、Hadoop はコンピュータ、MapReduce は CPU、HDFS はハードディスクです。

明らかに、MapReduce はデータを処理し、HDFS はデータを保存します。

Hadoop は、Apache Foundation によって開発された分散システム インフラストラクチャです。ユーザーは、配布の基礎となる詳細を知らなくても、分散プログラムを開発できます。高速コンピューティングとストレージのためにクラスターの能力を最大限に活用します。簡単に言えば、Hadoop は大規模なデータを処理するためにより簡単に開発および実行できるソフトウェア プラットフォームです。

Hadoop のコア コンポーネントは HDFS と MapReduce です。さまざまな処理タスクにより、さまざまなコンポーネントが次々に登場し、Hadoop エコシステムを充実させています。現在のエコシステム構造は大まかに図に示すとおりです。

データ収集ツール:

        ログ収集フレームワーク: Flume、Logstash、Filebeat

        データ移行ツール: Sqoop

データストレージツール:

        分散ファイルストレージシステム: Hadoop HDFS

        データベースシステム: Mongodb、HBase

データ処理ツール:

        分散コンピューティング フレームワーク:

        バッチ処理フレームワーク: Hadoop MapReduce

        ストリーム処理フレームワーク:ストーム

        ハイブリッド処理フレームワーク: Spark、Flink

クエリ分析フレームワーク: Hive、Spark SQL、Flink SQL、Pig、Phoenix

        リソースとタスクの管理:クラスター リソース マネージャー: Hadoop YARN

        分散調整サービス: Zookeeper

        タスク スケジューリング フレームワーク: Azkaban、Oozie

        クラスターの展開と監視: Ambari、Cloudera Manager

上記は比較的主流のビッグ データ フレームワークであり、コミュニティは非常に活発で、学習リソースは比較的豊富です。Hadoop から学び始めましょう。Hadoop はビッグ データ エコシステム全体の基礎であり、他のフレームワークは直接的または間接的に Hadoop に依存しているからです。

2. Hadoopの動作モード

Hadoop は 3 つのモードでインストールして実行できます。

1.スタンドアロンモード

(1) Hadoop のデフォルト モードでは、インストール中に構成ファイルを変更する必要はありません。

(2) Hadoop は、HDFS や YARN を起動せずに、1 台のコンピューター上で実行されます。

(3) MapReduce を実行してデータを処理する場合、JAVA プロセスは 1 つだけ存在し、データの入出力にはローカル ファイル システムが使用されます。

(4) MapReduce プログラムのロジックをデバッグして、プログラムの正確性を確認するために使用されます。

2. 擬似分散モード

(1) Hadoop は 1 台のコンピュータにインストールされており、1 台のコンピュータで複数のホストのクラスタをシミュレートするには、対応する構成ファイルを変更する必要があります。

(2) 独立した Java プロセスである HDFS と YARN を起動する必要があります。

(3) MapReduce が実行してデータを処理する場合、ジョブごとに独立したプロセスとなり、入出力には分散ファイルシステムが使用されます。

(4) Hadoopプログラムが正しく実行されるかテストするための学習や開発に使用されます。

3. 完全分散モード

(1) 複数のコンピュータに JDK と Hadoop をインストールして相互接続されたクラスタを形成するには、対応する構成ファイルを変更する必要があります。

(2) Hadoop デーモンは複数のホストで構築されたクラスタ上で動作します。実際の制作環境。

3. Hadoop エコシステムのコンポーネント

1.HDFS

HDFS は Java ベースの Hadoop分散ファイル システム(Hadoop 分散ファイル システム) であり、Hadoop エコシステムの最も重要な部分です。HDFS は Hadoop のメイン ストレージ システムであり、ビッグ データ用にスケーラブルでフォールト トレラント性が高く、信頼性とコスト効率の高いデータ ストレージを提供します。HDFS は、安価なハードウェアに導入できるように設計されており、多くのインストールでデフォルト構成としてすでに設定されています。アプリケーション データにアクセスするための高いスループットを提供し、非常に大規模なデータ セットを含むアプリケーションに適しています。Hadoop は、シェルのようなコマンドを通じて HDFS と直接対話します。

HDFS には、NameNode と DataNode という 2 つの主要コンポーネントがあります。

NameNode : NameNode はマスター ノードとしても知られていますが、実際のデータやデータセットは保存されません。NameNode は、メタデータ、つまりファイルのアクセス許可、アップロードされたファイルに含まれるブロック、Bolck ブロックが保存されているデータノード、およびその他の詳細を保存します。ファイルとディレクトリで構成されます。

NameNode のタスク:

  • ファイル システムの名前空間を管理します。
  • ファイルへのクライアントのアクセスを制御します。
  • ファイル名前空間を操作するファイルまたはディレクトリの操作 (開く、閉じる、名前変更など)。

DataNode : DataNode は、実際のデータを HDFS に保存し、ファイル システム クライアントからの読み取りおよび書き込み要求を処理します。起動時に、各データノードは対応するネームノードに接続し、ハンドシェイクを実行します。ネームスペース ID と DataNode のソフトウェア バージョンの検証は、ハンドシェイクを通じて行われます。不一致が見つかった場合、DataNode は自動的にシャットダウンされます。

データノードのタスク:

  • DataNode は保存されたデータを管理します。
  • DataNode は、NameNode からのブロックの作成、削除、およびブロックの複製命令も実行します。

2. マップリデュース

MapReduce は、Hadoop エコシステムのコア コンポーネントであり、データ処理を提供します。MapReduce は、Hadoop 分散ファイル システムに格納されている大量の構造化データおよび非構造化データを処理するアプリケーションを簡単に作成するためのソフトウェア フレームワークです。MapReduce プログラムの並列性により、クラスター内の複数のマシンを使用する大規模なデータ分析に役立ち、コンピューティングの速度と信頼性が向上します。MapReduce の各ステージには、入力および出力としてキーと値のペアがあります。Map 関数は、あるデータ セットを取得して別のデータ セットに変換します。ここで、個々の要素はタプル (キーと値のペア) に分割されます。この関数は、Map の出力を入力として受け取り、キーに従ってこれらのデータ タプルを組み立て、それに応じてキーの値を変更します。

MapReduce の特徴:

  • シンプルさ: MapReduce ジョブは簡単に実行できます。アプリケーションは、Java、C++、Python などの任意の言語で作成できます。
  • スケーラビリティ: MapReduce は PB レベルのデータを処理できます。
  • 速度: 並列処理を使用すると、解決に数日かかる問題も、MapReduce を使用すると数時間で解決できます。
  • フォールト トレランス: MapReduce が障害を処理します。データの 1 つのコピーが利用できない場合、別のマシンには同じキー ペアのコピーがあり、それを使用して同じサブタスクを解決できます。

3. 糸

YARN (Yet Another Resource Negotiator) は、Hadoop エコシステムのコンポーネントとしてリソース管理を提供します。Yarn は、Hadoop エコシステムの最も重要なコンポーネントの 1 つでもあります。YARN は、ワークロードの管理と監視を担当するため、Hadoop のオペレーティング システムとして知られています。これにより、リアルタイム ストリーミングやバッチ処理などの複数のデータ処理エンジンが 1 つのプラットフォームに保存されたデータを処理できるようになります。

  • 柔軟性: MapReduce (バッチ処理) に加えて、対話型やストリーミングなどの他の特殊なデータ処理モードも実装できます。YARN のこの機能により、他のアプリケーションも Hadoop2 の MapReduce プログラムと一緒に実行できます。
  • 効率: 同じクラスター上で多くのアプリケーションを実行すると、サービスの品質に大きな影響を与えることなく、Hadoop の効率が向上します。
  • 共有: 安定した信頼性の高い安全な基盤を提供し、複数のワークロード間で運用サービスを共有します。

基本モジュールに加えて、Hadoop には次の項目が含まれています。

4. ハイブ

Apache Hive は、Hadoop ファイルに保存されている大規模なデータセットをクエリおよび分析するためのオープン ソース データ ウェアハウス システムです。Hive は主に、データ集約、クエリ、分析の3 つの機能を実行します。Hive で使用される言語は HiveQL (HQL) と呼ばれ、SQL に似ています。HiveQL は、SQL のようなクエリを MapReduceジョブに自動的に変換し、 Hadoop 上で実行します。

Hive の主要な部分:

  • メタストア: メタデータ ストレージ。
  • ドライバー: HiveQL ステートメントのライフサイクルを管理します。
  • クエリ コンパイラ: HiveQL を有向非巡回グラフ (DAG) にコンパイルします。
  • Hive サーバー: Thrift インターフェイスと JDBC/ODBC サーバーを提供します。

5.豚

Apache Pig は、HDFS に保存されている巨大なデータセットを分析およびクエリするための高級言語プラットフォームです。Hadoop エコシステムの不可欠な部分である Pig は、SQL によく似た PigLatin 言語を使用します。そのタスクには、データのロード、必要なフィルターの適用、必要な形式でのデータのダンプが含まれます。プログラムを実行するには、Pig には Java ランタイム環境が必要です。

Apache Pigの特徴:

  • 拡張性: 特殊な処理については、ユーザーが独自の関数を作成できます。
  • 最適化の機会: Pig を使用すると、システムが自動的に最適化を実行できるため、ユーザーは効率ではなくセマンティクスに集中できるようになります。
  • あらゆる種類のデータを処理します: Pig は構造化データと非構造化データの両方を分析できます。

6.HBase

Hadoop エコシステムの不可欠な部分である Apache HBase は、数十億の行と数百万の列を含む可能性があるテーブルに構造化データを保存するように設計された分散データベースです。HBase は、HDFS 上に構築されたスケーラブルな分散 NoSQL データベースです。HBase は、HDFS 内のデータの読み取りまたは書き込みへのリアルタイム アクセスを提供します。

HBase には、HBase Master と RegionServer という 2 つのコンポーネントがあります。

HBase マスター

  • これは実際のデータ ストレージの一部ではありませんが、すべてのリージョン サーバー間の負荷分散をネゴシエートします。
  • Hadoop クラスターを保守および監視します。
  • 実行管理 (テーブルの作成、更新、および削除のためのインターフェイス)。
  • フェイルオーバーを制御します。
  • DDL 操作を処理します。

リージョンサーバー

  • クライアントからの読み取り、書き込み、更新、削除リクエストを処理します。
  • RegionServer プロセスは、Hadoop クラスターの各ノードで実行されます。RegionServer は HDFS の DateNode 上で実行されます。

7.Hカタログ

HCatalog は、Hadoop のテーブルおよびストレージ管理レイヤーです。HCatalog は、MapReduce、Hive、Pig などの Hadoop エコシステムのさまざまなコンポーネントをサポートし、クラスターからのデータの読み取りと書き込みを容易にします。HCatalog は、ユーザーがデータを任意の形式と構造で保存できるようにする Hive の主要なコンポーネントです。デフォルトでは、HCatalog は RCFile、CSV、JSON、sequenceFile、および ORC ファイル形式をサポートします。

8. アブロ

Acro は Hadoop エコシステムの一部であり、Hadoop にデータ シリアル化およびデータ交換サービスを提供する、最も人気のあるデータ シリアル化システムの 1 つです。これらのサービスは、一緒に使用することも、単独で使用することもできます。ビッグデータは Avro を使用して、異なる言語で書かれたプログラムを交換できます。シリアル化サービスを使用すると、プログラムはデータをファイルまたはメッセージにシリアル化できます。データ定義をデータとともにメッセージまたはファイルに保存することで、プログラムが Avro ファイルまたはメッセージに保存されている情報を動的に理解することが容易になります。

  • Avro スキーマ: シリアル化/逆シリアル化はスキーマに依存します。Avro では、データの書き込み/読み取りを行うためにスキーマが必要です。Avro データがファイルに保存されると、そのスキーマもファイルと一緒に保存されます。したがって、このファイルは後で任意のプログラムで処理できます。
  • 動的型付け: コードを生成せずにシリアル化および逆シリアル化を行うことを指します。これはコード生成を補完するものであり、Avro では静的型付け言語をオプションの最適化として使用できます。

9.倹約

Thrift は、スケーラブルな言語間サービス開発のためのソフトウェア フレームワークであり、RPC (リモート プロシージャ コール) 通信のためのインターフェイス定義言語です。Hadoop は多くの RPC 呼び出しを行うため、パフォーマンスやその他の理由で Thrift を使用することができます。

10. ドリル

Hadoop エコシステム コンポーネントの主な目的は、構造化データおよび半構造化データを含む大規模なデータ処理です​​。Apache Drill は、数千のノードに拡張し、ペタバイト規模のデータをクエリするように設計された低遅延の分散クエリ エンジンです。Drill は、スキーマフリー モデルを備えた初の分散 SQL クエリ エンジンです。

Drill には、ガベージ コレクションを排除し、メモリの割り当てと使用を最適化する専用のメモリ管理システムがあります。Drill は Hive とうまく連携し、開発者が既存の Hive デプロイメントを再利用できるようにします。

  • スケーラビリティ: Drill は、クエリ レイヤー、クエリ最適化、クライアント API などのさまざまなレイヤーでスケーラブルなアーキテクチャを提供します。企業の特定のニーズに応じて、あらゆるレイヤーを拡張できます。
  • 柔軟性: Drill は、複雑で高度に動的なデータを表現し、効率的な処理を可能にする階層型列データ モデルを提供します。
  • 動的スキーマ検出: ドリルでは、クエリ実行プロセスを開始するためにデータのスキーマや型を指定する必要はありません。代わりに、Drill はレコードのバッチと呼ばれる単位でデータの処理を開始し、処理中にその場でパターンを検出します。
  • Drill の分散メタデータ: 他の SQL Hadoop テクノロジとは異なり、Drill には集中メタデータ要件がありません。Drill ユーザーは、データをクエリするためにメタデータ内のテーブルを作成および管理する必要はありません。

11.象使い

Apache Mahout は、スケーラブルな機械学習アルゴリズムとデータ マイニング ライブラリを作成するためのオープンソース フレームワークです。データが HDFS に保存されると、Mahout はこれらの大規模なデータセットから意味のあるパターンを自動的に見つけるデータ サイエンス ツールを提供します。

Mahout のアルゴリズムには次のものが含まれます。

  • クラスタリング
  • 協調フィルタリング
  • 分類
  • 頻繁なパターンマイニング

12. スクープ

Apache Sqoop は、外部ソースから HDFS、Hbase、Hive などの関連する Hadoop エコシステム コンポーネントにデータをインポートします。Hadoop から他の外部ソースにデータをエクスポートすることもできます。Sqoop は、teradata、Netezza、oracle、MySQL などのリレーショナル データベースで動作します。

Apache Sqoopの特徴:

  • メインフレームからのシーケンシャル データセットのインポート: Sqoop は、メインフレームから HDFS にデータを移動するという増大するニーズに対応します。
  • ORC ファイルの直接インポート: 圧縮と軽量のインデックス作成が強化され、クエリのパフォーマンスが向上しました。
  • 並列データ転送: より高速なパフォーマンスと最適なシステム使用率が可能になります。
  • 効率的なデータ分析: 読み取りデータ レイクのスキーマ内で構造化データと非構造化データを組み合わせることで、データ分析の効率を向上させます。
  • 高速データ コピー: 外部システムから Hadoop へ。

13. フリューム

Apache Flume は、大量のデータを効率的に収集、集約し、元の場所から HDFS に戻します。これはフォールトトレラントで信頼性の高いメカニズムです。Flume を使用すると、データがソースから Hadoop 環境に流れることができます。シンプルで拡張可能なデータ モデルを使用し、オンライン分析アプリケーションを可能にします。Flume を使用すると、複数のサーバーからデータを即座に Hadoop に取得できます。

14. アンバリ

Ambari は、Apache Hadoop クラスターを構成、管理、監視、保護するための管理プラットフォームです。Ambari は一貫した安全な運用制御プラットフォームを提供するため、Hadoop の管理が容易になります。

アンバリの特徴:

  • 簡素化されたインストール、構成、管理: Ambari は、大規模なクラスターを簡単かつ効率的に作成および管理します。
  • 一元化されたセキュリティ設定: Ambari は、プラットフォーム全体でのクラスター セキュリティの管理と構成の複雑さを軽減します。
  • 高度なスケーラビリティとカスタマイズ性: Ambari は高度なスケーラビリティを備えており、カスタム サービスを管理できます。
  • クラスターの健全性に対する包括的な可視性: Ambari は、全体的な監視アプローチを通じてクラスターの健全性と可用性を確保します。

15. 動物園の飼育員

Apache Zookeeper は、構成情報、名前の管理、分散同期の提供、およびグループ サービスの提供に使用されます。Zookeeper は、大規模なマシンのクラスターを管理および調整します。

Zookeeperの特徴

  • 高速: Zookeeper は、データの書き込みよりも読み取りの方が一般的なワークロードでは高速です。理想的な読み取り/書き込み比率は 10:1 です。
  • 注文済み: Zookeeper はすべての取引の記録を保持します。

4. Hadoopの長所と短所

Hadoop に基づいて開発されたビッグ データ プラットフォームには、通常、次のような特徴があります。

  • スケーラビリティ: PB レベルのデータを確実に保存および処理できます。Hadoop エコシステムは基本的に、高いスループット、安定性、信頼性を備えたストレージ コンポーネントとして HDFS を使用します。
  • 低コスト:安価な汎用マシンで構成されたサーバー群でデータの配信・処理が可能です。これらのサーバー ファームには、最大で数千のノードを追加できます。
  • 高効率: Hadoop はデータを分散することにより、データが存在するノード上で並列処理でき、処理速度が非常に高速です。
  • 信頼性: Hadoop はデータの複数のバックアップを自動的に維持し、タスクの失敗後にコンピューティング タスクを自動的に再展開できます。

Hadoop の環境上の欠点:

  • Hadoop はファイル ストレージ システムを使用するため、読み取りと書き込みの適時性が低く、これまでのところ、高速な更新と効率的なクエリの両方をサポートするコンポーネントはありません。
  • Hadoop エコシステムはますます複雑になり、コンポーネント間の互換性が低く、インストールとメンテナンスが困難になっています。
  • Hadoop の各コンポーネントの機能は比較的単一であり、利点は明らかですが、欠点も明らかです。
  • Hadoop に対するクラウド エコロジーの影響は明らかであり、クラウド ベンダーのカスタマイズされたコンポーネントによりバージョン差がさらに拡大し、共同勢力を形成することができなくなります。
  • 全体的なエコロジーは Java 開発に基づいていますが、耐障害性が低く、使いやすさが低く、コンポーネントがハングアップしやすいです。

5、Hadoop ラーニング パス

(1) プラットフォーム基盤

1.1 ビッグデータ

ビッグ データとは何か、ビッグ データの概要、ビッグ データの概要について説明します。

また、ストレージやコンピューティングの問題など、ビッグデータに存在する問題とその解決策についても説明します。

1.2 Hadoop プラットフォームのエコシステム

オープンソースの Hadoop プラットフォーム エコシステムとサードパーティのビッグ データ プラットフォームに精通している場合は、Hadoop の紹介ブログや公式 Web サイトを見つけて、以下について学びましょう。

Hadoopとは

Hadoopが存在する理由

Hadoopの使用方法

1.3 Hadoop ファミリのメンバー

Hadoop は、ストレージやコンピューティングなどの一連の製品コンポーネントを含む巨大なファミリーであり、HDFS、MapReduce、Yarn、Hive、HBase、ZooKeeper、Flume、Kafka、Sqoop、HUE、Phoenix を含む一連のコンポーネントを理解する必要があります。 、Impala、Pig、Oozie、Spark などは、それが何をするのか、Wikipedia の定義を知っています。

1.4 HDFS

分散ストレージ HDFS については、HDFS アーキテクチャ、HDFS ストレージ メカニズム、および各ノードの協力関係を明確に理解する必要があります。

1.5 糸

分散リソース管理 Yarn。Yarn アーキテクチャとリソースの管理方法に精通しています。

1.6 マップリデュース

分散コンピューティング MapReduce、MapReduce の基礎となるアーキテクチャ、処理ソリューション、コンピューティング アーキテクチャ ソリューションを理解し、MapReduce コンピューティングの長所と短所を理解します。

1.7 Hベース

HBase でのビッグ データの効率的なストレージ。HBase の基礎となるアーキテクチャ、HBase のアプリケーション シナリオ、およびストレージ ソリューションを理解します。

1.8 ハイブ

ビッグ データ ウェアハウスである Hive は、Hive のストレージ メカニズム、Hive のトランザクション変更、Hive のアプリケーション シナリオ、および Hive の基盤となるコンピューティングを理解しています。

1.9 スパーク

インメモリ コンピューティング プラットフォーム Spark。Spark インメモリ コンピューティング アーキテクチャ、コンピューティング プロセス、Spark の動作モード、およびアプリケーション シナリオに精通しています。

(2) 先進的なプラットフォーム

2.1 HDFS

コマンドラインを介して HDFS を操作し、ファイルの表示、アップロード、ダウンロード、ファイルの変更、権限の割り当てなどを行います。

Java デモを通じて HDFS に接続して操作し、ファイルの読み取り、アップロード、ダウンロード機能を実現します。

DI ツールを使用して、リレーショナル データベース ファイルを HDFS に保存し、HDFS ファイルをローカル ディレクトリに保存するように HDFS 操作プロセスを構成します。

2.2 マップリデュース

Eclipse は Hadoop 環境をバインドし、MapReduce Location を追加し、Eclipse を使用して MapReduce の古典的なインスタンスである WordCount を実行して原理を確認し、中国語の語彙統計に変更して無関係な単語を除外します。

2.3 ハイブ

コマンド ラインから Hive を操作し、ビーライン接続を実行し、SQL ステートメントを使用して Hive データ ウェアハウスを操作します。

Java デモを通じて Hive に接続して操作し、テーブルの作成、データの挿入、クエリ、データ レコードの削除、データの更新、テーブルの削除などの操作を実現します。

DI ツールを使用して、Hive トランザクション テーブル プロセスを抽出するようにリレーショナル データベースを構成し、ダイレクト ドライブを介して Hive に接続せず、HDFS と Hive の外観を介して過剰実装します。

2.4 HBase

コマンド ラインでのアクセス操作では、HBase を使用し、列ファミリーを作成し、各列にデータを追加し、データを変更および更新して変更を表示します。

Java デモを通じて、phoenix ドライバーを使用して HBASE に接続し、HBASE 上でのテーブルの作成、追加、削除、変更、およびデータのクエリ操作を実現します。

DI ツールは、使用する前にソース コードを変更するか、phoenix コンポーネントを追加する必要があります。これは、phoenix 挿入ステートメントが Insert into ではなく Upsert into であり、DI ツールと一致しないためです。

2.5 スパーク

コマンド ラインで、pyspark と Spark シェルを実行し、Spark コマンド ライン操作を実行し、Spark サンプル タスクを送信して、試行を実行します。

Spark 実行モードを切り替えて、コマンド ラインを試してください。

Java デモを通じて Spark に接続し、タスクを分散および計算します。

(3) 先進的なプラットフォーム

上記のコンポーネントを使いこなし、練習を積んで一つのインスタンスから推論し、場面に応じてMapReduceコードやSparkコードなどを書けるようになり、サポートされているSQLの種類や保存されているSQLの操作方法を深く理解するHive や HBase のプロシージャ、トリガーなどを理解し、要件に応じて最適なソリューションを設計できる。

(4) プラットフォームの奥行き

コンポーネントのソースコードを深く読み、プラットフォーム展開における各構成の意味と影響を理解し、ソースコードと構成を通じてコン​​ポーネントを最適化する方法を理解し、ソースコードを変更してフォールトトレランス、スケーラビリティ、安定性などを向上させます。 Hadoop プラットフォーム。

参考文献:

Hadoop エコシステムにはどのようなコンポーネントが含まれていますか • Worktile Community

https://www.cnblogs.com/wzgwzg/p/15997342.html

Hadoop ラーニング パス - Alibaba Cloud 開発者コミュニティ

おすすめ

転載: blog.csdn.net/weixin_62909516/article/details/131628207