Hadoop的運行模式

来源:https://www.cnblogs.com/H-YONG-8/archive/2023/05/08/17382959.html
-Advertisement-
Play Games

Hadoop官方網站 http://hadoop.apache.org/ Hadoop運行模式 本地模式:單機運行,只是用來演示一下官方案例。生產環境不用。 偽分散式模式:也是單機運行,但是具備Hadoop集群的所有功能,一臺伺服器模擬一個分散式的環境。個別缺錢的公司用來測試,生產環境不用。 完全分 ...


Hadoop官方網站

http://hadoop.apache.org/

Hadoop運行模式

  • 本地模式:單機運行,只是用來演示一下官方案例。生產環境不用

  • 偽分散式模式:也是單機運行,但是具備Hadoop集群的所有功能,一臺伺服器模擬一個分散式的環境。個別缺錢的公司用來測試,生產環境不用。

  • 完全分散式模式:多台伺服器組成分散式環境。生產環境使用。

本地運行模式(官方 WordCount)

  • 創建在hadoop-3.1.3文件下麵創建一個wcinput文件夾

 [root@hadoop102 hadoop-3.1.3]$ mkdir wcinput
  • 在wcinput文件下創建一個word.txt文件

 [root@hadoop102 hadoop-3.1.3]$ cd wcinput
  • 編輯word.txt文件

 [root@hadoop102 wcinput]$ vim word.txt
 hadoop
 yarn
 hadoop
 mapreduce
 atguigu
 atguigu
  • 回到 Hadoop 目錄/opt/module/hadoop-3.1.3

  • 執行程式

 [root@hadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput
  • 查看結果

 [root@hadoop102 hadoop-3.1.3]$ cat wcoutput/part-r-00000 
 
 看到如下結果:
 
 atguigu 2
 hadoop 2
 mapreduce   1
 yarn   1

偽分散式模式

完全分散式模式(開發重點)

  • 準備3台客戶機(關閉防火牆、靜態IP、主機名稱)

  • 安裝JDK

  • 配置環境變數

  • 安裝Hadoop

  • 配置環境變數

  • 配置集群

  • 單點啟動

  • 配置ssh

  • 群起並測試集群

虛擬機準備

編寫集群分發腳本xsync

1、scp(secure copy)安全拷貝

  • 定義

    scp可以實現伺服器與伺服器之間的數據拷貝。(from server1 to server2)

  • 基本語法

    scp -r $pdir/$fname $user@$host:$pdir/$fname

    命令 遞歸 要拷貝的文件路徑/名稱 目的地用戶@主機:目的地路徑/名稱

     scp  -r     $pdir/$fname       $user@$host:$pdir/$fname
  • 實操

    • 前提:在 hadoop102、hadoop103、hadoop104 都已經創建好的/opt/module、 /opt/software 兩個目錄

    • 在hadoop102上,將hadoop102中/opt/module/jdk1.8.0_212目錄拷貝到hadoop103上。

     [root@hadoop102 ~]$ scp -r /opt/module/jdk1.8.0_212 root@hadoop103:/opt/module
    • 在hadoop103上,將hadoop102中/opt/module/hadoop-3.1.3目錄拷貝到hadoop103上。

     [root@hadoop103 ~]$ scp -r root@hadoop102:/opt/module/hadoop-3.1.3 /opt/module/ 
    • 在hadoop103上操作,將hadoop102中/opt/module目錄下所有目錄拷貝到hadoop104上。

     [root@hadoop103 opt]$ scp -r root@hadoop102:/opt/module/* root@hadoop104:/opt/module 

2、rsync遠程同步工具

  • 定義

    rsync主要用於備份和鏡像。具有速度快、避免複製相同內容和支持符號鏈接的優點。

  • rsync和scp區別:

    用rsync做文件的複製要比scp的速度快,rsync只對差異文件做更新。scp是把所有文件都複製過去。

  • 基本語法

    rsync -av $pdir/$fname $user@$host:$pdir/$fname

    命令 選項參數 要拷貝的文件路徑/名稱 目的地用戶@主機:目的地路徑/名稱

     rsync -av pdir/fname user @user@host:pdir/fname

    選線參數說明

    選項功能
    -a 歸檔拷貝
    -v 顯示覆制過程
  • 實操

    • 刪除hadoop103中/opt/module/hadoop-3.1.3/wcinput

     [root@hadoop103 hadoop-3.1.3]$ rm -rf wcinput/
    • 同步hadoop102中的/opt/module/hadoop-3.1.3到hadoop103

     [root@hadoop102 module]$ rsync -av hadoop-3.1.3/ root@hadoop103:/opt/module/hadoop-3.1.3/

3、xsync集群分發腳本

  • 需求:迴圈複製文件到所有節點的相同目錄下

  • 在/home/bin目錄下創建xsync文件

     [root@hadoop102 opt]$ cd /home/atguigu
     
     [root@hadoop102 ~]$ mkdir bin
     
     [root@hadoop102 ~]$ cd bin
     
     [root@hadoop102 bin]$ vim xsync
  • 在該文件編寫代碼

     #!/bin/bash
     #1.判斷參數個數
     if [ $# -lt 1 ]
     then
     echo Not Enough Arguement!
     exit;
     fi
     #2.遍歷集群所有機器
     for host in hadoop102 hadoop103 hadoop104
     do
     echo ================$host============
     #3.遍歷所有目錄。挨個發送
     for file in $@
     do
     #4.判斷文件是否存在
     if [ -e $file ]
     then
     #5.獲取父目錄
     pdir=$(cd -P $(dirname $file); pwd)
     #6.獲取當前文件的名稱
     fname=$(basename $file)
     ssh $host "mkdir -p $pdir"
     rsync -av $pdir/$fname $host:$pdir
     else
     echo $file does not exists!
     fi
     done
     done
  • 修改腳本xsync的許可權

     [root@hadoop102 bin]$ chmod 777(+x) xsync
  • 測試腳本

     [atguigu@hadoop102 ~]$ xsync /home/atguigu/bin
  • 將腳本複製到/bin中,以便全局調用

     [root@hadoop102 bin]$ sudo cp xsync /bin/
  • 同步環境變數配置(root所有者)

     [root@hadoop102 ~]$ sudo ./bin/xsync /etc/profile.d/my_env.sh

SSH免密登錄

配置ssh

  • 基本語法

    ssh 另一臺電腦的 IP 地址

  • ssh 連接時出現 Host key verification failed 的解決方法

     [atguigu@hadoop102 ~]$ ssh hadoop103 
  • 如果出現如下內容

     Are you sure you want to continue connecting (yes/no)? 
    • 輸入 yes,並回車

  • 退回到 hadoop102

  [atguigu@hadoop103 ~]$ exit
  • 查看sshd的狀態:

 systemctl status sshd

無密鑰配置

免密登錄原理

image-20230402173350859

生成公鑰和密鑰
 [root@hadoop102 .ssh]$ pwd /home/atguigu/.ssh   [root@hadoop102 .ssh]$ssh-keygen -t rsa
  • 然後敲(三個回車),就會生成兩個文件id_rsa(私鑰)、id_rsa.pub(公鑰)

將公鑰拷貝到免密登錄的目標機器上
 [root@hadoop102 .ssh]$ ssh-copy-id hadoop102
 [root@hadoop102 .ssh]$ ssh-copy-id hadoop103
 [root@hadoop102 .ssh]$ ssh-copy-id hadoop104

註意:

  • 還需要在hadoop103上採用root賬號配置一下無密登錄到hadoop102、hadoop103、hadoop104伺服器上。

  • 還需要在hadoop104上採用root賬號配置一下無密登錄到hadoop102、hadoop103、hadoop104伺服器上。

  • 還需要在hadoop102上採用root賬號,配置一下無密登錄到hadoop102、hadoop103、hadoop104;

ssh的文件功能

known_hosts記錄ssh訪問過電腦的公鑰(public key)
id_rsa 生成的私鑰
id_rsa.pub 生成的公鑰
authorized_keys 存放授權過的無密登錄伺服器公鑰

集群配置

集群部署

 hadoop102Hadoop103hadoop104
HDFS NameNodeDataNode DataNode SecondaryNameNodeDataNode
YARN NodeManager ResourceManagerNodeManager NodeManager
  • 註意:

    1. NameNode和SecondaryNameNode不要安裝在同一臺伺服器

    2. ResourceManager也很消耗記憶體,不要和NameNode、SecondaryNameNode配置在同一臺機器上。

配置文件

  • Hadoop配置文件分為兩類:預設配置文件和自定義配置文件,只有用戶想修改某一預設配置值時,才需要修改自定義配置文件,更改相應屬性值。

  • 預設配置文件

    要獲取的預設文件文件存放在 Hadoop 的 jar 包中的位置
    [core-default.xml] hadoop-common-3.1.3.jar/core-default.xm
    [hdfs-default.xml] hadoop-hdfs-3.1.3.jar/hdfs-default.xml
    [yarn-default.xml] hadoop-yarn-common-3.1.3.jar/yarn-default.xm
    [mapred-default.xml] hadoop-yarn-common-3.1.3.jar/yarn-default.xm
  • 自定義配置文件

    core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四個配置文件存放在 $HADOOP_HOME/etc/hadoop 這個路徑上,用戶可以根據項目需求重新進行修改配置。

配置集群

  • 核心配置文件

    配置 core-site.xml

     [atguigu@hadoop102 ~]$ cd $HADOOP_HOME/etc/hadoop [atguigu@hadoop102 hadoop]$ vim core-site.xml

    文件內容如下:

     <?xml version="1.0" encoding="UTF-8"?>
     <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
     <configuration>
     <!-- 指定 NameNode 的地址 -->
     <property>
     <name>fs.defaultFS</name>
     <value>hdfs://hadoop102:8020</value>
     </property>
     <!-- 指定 hadoop 數據的存儲目錄 -->
     <property>
     <name>hadoop.tmp.dir</name>
     <value>/opt/module/hadoop-3.1.3/data</value>
     </property>
     <!-- 配置 HDFS 網頁登錄使用的靜態用戶為 atguigu -->
     <property>
     <name>hadoop.http.staticuser.user</name>
     <value>atguigu</value>
     </property>
     </configuration>
  • HDFS配置文件

    配置 hdfs-site.xml

     [atguigu@hadoop102 hadoop]$ vim hdfs-site.xml

    文件內容如下:

     1  <?xml version="1.0" encoding="UTF-8"?>
     2  <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
     3  <configuration>
     4  <!-- nn web 端訪問地址-->
     5  <property>
     6  <name>dfs.namenode.http-address</name>
     7  <value>hadoop102:9870</value>
     8  </property>
     9  <!-- 2nn web 端訪問地址-->
    10  <property>
    11  <name>dfs.namenode.secondary.http-address</name>
    12  <value>hadoop104:9868</value>
    13  </property>
    14  </configuration>

     

  • YARN配置文件

    配置 yarn-site.xml

     [atguigu@hadoop102 hadoop]$ vim yarn-site.xml

    文件內容如下: 

     
     1 <?xml version="1.0" encoding="UTF-8"?>
     2  <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
     3  <configuration>
     4  <!-- 指定 MR 走 shuffle -->
     5  <property>
     6  <name>yarn.nodemanager.aux-services</name>
     7  <value>mapreduce_shuffle</value>
     8  </property>
     9  <!-- 指定 ResourceManager 的地址-->
    10  <property>
    11  <name>yarn.resourcemanager.hostname</name>
    12  <value>hadoop103</value>
    13  </property>
    14  <!-- 環境變數的繼承 -->
    15  <property>
    16  <name>yarn.nodemanager.env-whitelist</name>
    17  <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO
    18  NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
    19  RED_HOME</value>
    20  </property>
    21  </configuration>
  • MapReduce配置文件

    配置 mapred-site.xml

     [atguigu@hadoop102 hadoop]$ vim mapred-site.xml

    文件內容如下:

    
    
  • 分發Hadoop配置文件

     [atguigu@hadoop102 hadoop]$ xsync /opt/module/hadoop3.1.3/etc/hadoop/
  • 查看分發情況

     [atguigu@hadoop103 ~]$ cat /opt/module/hadoop•3.1.3/etc/hadoop/core-site.xml
     [atguigu@hadoop104 ~]
     <?xml version="1.0" encoding="UTF-8"?>
     <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
     <configuration>
     <!-- 指定 MapReduce 程式運行在 Yarn 上 -->
     <property>
     <name>mapreduce.framework.name</name>
     <value>yarn</value>
     </property>
     </configuration>

     

    $ cat /opt/module/hadoop•3.1.3/etc/hadoop/core-site.xml
     

群起集群

  1. 配置 workers

     [atguigu@hadoop102 hadoop]$ vim /opt/module/hadoop•3.1.3/etc/hadoop/workers

    在該文件中增加如下內容:

     hadoop102 
     hadoop103
     hadoop104
    • 註意:該文件中添加的內容結尾不允許有空格,文件中不允許有空行。

    同步所有節點配置文件

     [atguigu@hadoop102 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc
  2. 啟動集群

    • 如果集群是第一次啟動,需要在 hadoop102 節點格式化 NameNode(註意:格式 化 NameNode,會產生新的集群 id,導致 NameNode 和 DataNode 的集群 id 不一致,集群 找不到已往數據。如果集群在運行過程中報錯,需要重新格式化 NameNode 的話,一定要 先停止 namenode 和 datanode 進程,並且要刪除所有機器的 data 和 logs 目錄,然後再進行 格式化。

       [atguigu@hadoop102 hadoop-3.1.3]$ hdfs namenode -format
    • 啟動 HDFS

       [atguigu@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh
    • 在配置了 ResourceManager 的節點(hadoop103)啟動 YARN

       [atguigu@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh
    • Web 端查看 HDFS 的 NameNode

      瀏覽器中輸入:http://hadoop102:9870

      查看 HDFS 上存儲的數據信息

    • Web 端查看 YARN 的 ResourceManager

      瀏覽器中輸入:http://hadoop103:8088

      查看 YARN 上運行的 Job 信息

  3. 集群基本測試

    • 上傳文件到集群

      上傳小文件

       [atguigu@hadoop102 ~]$ hadoop fs -mkdir /input
       [atguigu@hadoop102 ~]$ hadoop fs -put
       $HADOOP_HOME/wcinput/word.txt /input

      上傳大文件

       [atguigu@hadoop102 ~]$ hadoop fs -put /opt/software/jdk-8u212-
       linux-x64.tar.gz /
    • 上傳文件後查看文件存放在什麼位置

      查看 HDFS 文件存儲路徑

       [atguigu@hadoop102 subdir0]$ pwd
       /opt/module/hadoop-3.1.3/data/dfs/data/current/BP-1436128598-
       192.168.10.102-1610603650062/current/finalized/subdir0/subdir0

      查看 HDFS 在磁碟存儲文件內容

       [atguigu@hadoop102 subdir0]$ cat blk_1073741825
       hadoop yarn
       hadoop mapreduce
       atguigu
       atguigu
    • 拼接

       -rw-rw-r--. 1 atguigu atguigu 134217728 5 月 23 16:01 blk_1073741836
       -rw-rw-r--. 1 atguigu atguigu 1048583 5 月 23 16:01 blk_1073741836_1012.meta
       -rw-rw-r--. 1 atguigu atguigu 63439959 5 月 23 16:01 blk_1073741837
       -rw-rw-r--. 1 atguigu atguigu 495635 5 月 23 16:01 blk_1073741837_1013.meta
       [atguigu@hadoop102 subdir0]$ cat blk_1073741836>>tmp.tar.gz
       [atguigu@hadoop102 subdir0]$ cat blk_1073741837>>tmp.tar.gz
       [atguigu@hadoop102 subdir0]$ tar -zxvf tmp.tar.gz
    • 下載

       [atguigu@hadoop104 software]$ hadoop fs -get /jdk-8u212-linux•x64.tar.gz ./
    • 執行wordcount程式

       [atguigu@hadoop102 hadoop-3.1.3]$ hadoop jar
       share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar
       wordcount /input /output

配置歷史伺服器

為了查看程式的歷史運行情況,需要配置一下歷史伺服器。具體配置步驟如下:

  1. 配置 mapred-site.xml

     [atguigu@hadoop102 hadoop]$ vim mapred-site.xml

    在該文件裡面增加如下配置。

     1  <!-- 歷史伺服器端地址 -->
     2  <property>
     3  <name>mapreduce.jobhistory.address</name>
     4  <value>hadoop102:10020</value>
     5  </property>
     6  <!-- 歷史伺服器 web 端地址 -->
     7  <property>
     8  <name>mapreduce.jobhistory.webapp.address</name>
     9  <value>hadoop102:19888</value>
    10  </property>
  2. 分發配置

     [atguigu@hadoop102 hadoop]$ xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml
  3. 在 hadoop102 啟動歷史伺服器

     [atguigu@hadoop102 hadoop]$ mapred --daemon start historyserver
  4. 在 hadoop102 啟動歷史伺服器

     [atguigu@hadoop102 hadoop]$ jps
  5. 查看 JobHistory

    http://hadoop102:19888/jobhistory

配置日誌的聚集

  • 日誌聚集概念:應用運行完成以後,將程式運行日誌信息上傳到 HDFS 系統上。

    image-20230408165101397

  • 日誌聚集功能好處:可以方便的查看到程式運行詳情,方便開發調試。

  • 註意:開啟日誌聚集功能,需要重新啟動 NodeManager 、ResourceManager 和 HistoryServer。

  1. 配置 yarn-site.xml

     [atguigu@hadoop102 hadoop]$ vim yarn-site.xml

    在該文件裡面增加如下配置。

     1  <!-- 開啟日誌聚集功能 -->
     2  <property>
     3  <name>yarn.log-aggregation-enable</name>
     4  <value>true</value>
     5  </property>
     6  <!-- 設置日誌聚集伺服器地址 -->
     7  <property>
     8  <name>yarn.log.server.url</name>
     9  <value>http://hadoop102:19888/jobhistory/logs</value>
    10  </property>
    11  <!-- 設置日誌保留時間為 7 天 -->
    12  <property>
    13  <name>yarn.log-aggregation.retain-seconds</name>
    14  <value>604800</value>
    15  </property>
  2. 分發配置

     [atguigu@hadoop102 hadoop]$ xsync $HADOOP_HOME/etc/hadoop/yarn•site.xml
  3. 關閉 NodeManager 、ResourceManager 和 HistoryServer

     [atguigu@hadoop103 hadoop-3.1.3]$ sbin/stop-yarn.sh
     
     [atguigu@hadoop103 hadoop-3.1.3]$ mapred --daemon stop historyserver
  4. 啟動 NodeManager 、ResourceManage 和 HistoryServer

     [atguigu@hadoop103 ~]$ start-yarn.sh
     [atguigu@hadoop102 ~]$ mapred --daemon start historyserver
  5. 刪除 HDFS 上已經存在的輸出文件

     [atguigu@hadoop102 ~]$ hadoop fs -rm -r /output
  6. 執行 WordCount 程式

     [atguigu@hadoop102 hadoop-3.1.3]$ hadoop jar
     share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar
     wordcount /input /output
  7. 查看日誌

集群啟動/停止方式總結

  1. 各個模塊分開啟動/停止(配置 ssh 是前提)常用

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 隨著技術的發展,ASP.NET Core MVC也推出了好長時間,經過不斷的版本更新迭代,已經越來越完善,本系列文章主要講解ASP.NET Core MVC開發B/S系統過程中所涉及到的相關內容,適用於初學者,在校畢業生,或其他想從事ASP.NET Core MVC 系統開發的人員。 經過前幾篇文章... ...
  • 重要聲明-針對攻擊者 網站pljzy.top被某人攻擊 ZY知識庫 首先 說我網站抄襲,文章抄襲,ok,你列舉一下我有那幾篇文章是抄的別人的?自己眼睛不看的是吧,但凡我參考的別人的文章我都會放原文地址。 先放幾張圖片,真搞不懂我抄誰了,下麵全是我自己電腦的md文件,我抄誰的了?全是我自己做的筆記。 ...
  • 你是否見過`bash ... 2>&1 1>file.txt`的寫法? 還沒發現這樣的寫法有什麼問題? 那麼恭喜你, 看完本文你又將學會一個新知識! ...
  • 1. 前言 還記得大學第一次接觸Ubuntu和Linux的時候,覺得用apt安裝想要的軟體非常方便。但是有時候出現了問題,各種報錯,自己又不懂原理,就會非常抓狂。現在稍微理解一點了,故以較為容易理解的方式記錄在這裡,方便他人。 2. 軟體包與包管理器dpkg Linux里的軟體就是一些可執行文件。就 ...
  • 背景 工作中遇到客戶反饋,上層應用UDP固定間隔100ms發包,但本地tcpdump抓包存在波動,有的數據包之間間隔107ms甚至更多,以此重新梳理了下udp的發送流程。 udp發包流程 udp_sendmsg UDP corking 是一項優化技術,允許內核將多次數據累積成單個數據報發送。在用戶程 ...
  • 如果你在 Docker 環境中使用 WebSocket 並通過 Nginx 進行代理,可能需要進行一些額外的配置才能使 WebSocket 正常工作。 下麵是一些可能會導致 WebSocket 代理失敗的問題以及相應的解決方法: 檢查 Nginx 配置 在 Nginx 配置中,確保已經正確地設置了 ...
  • TTL是 Time To Live的縮寫,該欄位指定IP包被路由器丟棄之前允許通過的最大網段數量。TTL是IPv4報頭的一個8 bit欄位。 IPv4包頭中TTL是一個8 bit欄位,它位於IPv4包的第9個位元組。如下圖所示,每一行表示 32 bit(4位元組),位從0開始編號,即0~31。 TTL的 ...
  • (工作中,Oracle常用函數) 1、序言 Oracle提供了不少內置函數,熟練使用這些函數,可以大大提高我們工作效率。函數可以接受0個或多個入參,並返回一個輸出結果。 2、Oracle函數分類 Oracle函數分為單行函數和聚合函數 單行函數:對每一個函數應用在表的記錄中時,只能輸入一行結果,返回 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...