搭建簡單的hadoop集群(譯文)

来源:http://www.cnblogs.com/lzfhope/archive/2017/06/22/7061090.html
-Advertisement-
Play Games

本文翻譯翻譯自http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-common/ClusterSetup.html 譯註:僅僅是翻譯,內容關於搭建一個純凈,簡單的hadoop集群。實際的集群,需要考慮高可靠,性能,安全。 參 ...


本文翻譯翻譯自http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-common/ClusterSetup.html

譯註:僅僅是翻譯,內容關於搭建一個純凈,簡單的hadoop集群。實際的集群,需要考慮高可靠,性能,安全。

參考:高可靠

          安全(保全):保全模式伺服器級別授權

 

1.目的

告訴讀者如何搭建具有幾個節點或者成千上萬個節點的集群。

但不包含高可靠和保全內容。

 

2.前提

  • 安裝必要的java版本
  • 下載穩定版本

譯註:如果是生產庫,千萬不要使用穩定版本之外的。除非你願意支付這種代價。

 

3.安裝

通常包括在所有節點上解壓軟體,或者也可以使用打包系統。

劃分硬體的功能很重要。

通常,一臺機器作為名稱節點,另外一臺作為資源管理器。這兩台是核心機器。

其它服務(諸如web應用代理伺服器和mr作業歷史伺服器)可以運行在專有機器上,也可以在大機上共存,具體取決於負載。

其它的機器,用作數據節點和節點管理器。它們屬於從屬。

譯註:原文分別使用master和slave劃分幾種服務。以為把它們分別翻譯為“核心","從屬".

 

4.非保全模式的配置

hadoop的java配置通過兩種配置文件進行:

  • 只讀預設配置  - core-default.xml, hdfs-default.xml, yarn-default.xml 和mapred-default.xml.

  • 節點特定配置  -  etc/hadoop/core-site.xml, etc/hadoop/hdfs-site.xml, etc/hadoop/yarn-site.xm和etc/hadoop/mapred-site.xml.

此外,我們可以控制位於bin目錄下的hadoop腳本,方式是修改 etc/hadoop/hadoop-env.sh 和 etc/hadoop/yarn-env.sh

為了配置hadoop集群,我們需要配置運行hadoop守護程式用戶的環境變數,並配置守護程式有關的參數。

HDFS守護程式包含NameNode, SecondaryNameNode, and DataNode。YARN的是ResourceManager, NodeManager, 和WebAppProxy。如果有使用MR,那麼還包含MapReduce Job History Server。

在大型集群中,這些守護程式通常是在不同的主機上分開運行(應為壓力實在大)。

4.1配置hadoop守護程式環境

管理員應該使用etc/hadoop/hadoop-env.sh,etc/hadoop/mapred-env.shetc/hadoop/yarn-env.sh來設定節點有關的定製環境。

有些情況下,還必須設定JAVA_HOME。(譯註,這個是通過實踐,是嚴重推薦的,因為有的人的機器上可能有許多JAVA環境).

管理員可以使用下表中環境變數為每個獨立的守護程式設定特定的選項:

DaemonEnvironment Variable
NameNode HADOOP_NAMENODE_OPTS
DataNode HADOOP_DATANODE_OPTS
Secondary NameNode HADOOP_SECONDARYNAMENODE_OPTS
ResourceManager YARN_RESOURCEMANAGER_OPTS
NodeManager YARN_NODEMANAGER_OPTS
WebAppProxy YARN_PROXYSERVER_OPTS
Map Reduce Job History Server HADOOP_JOB_HISTORYSERVER_OPTS

 

例如,為了讓名稱節點可以使用JAVA並行的GC(垃圾回收),那麼可以在 hadoop-env.sh 中添加如下語句:

export HADOOP_NAMENODE_OPTS="-XX:+UseParallelGC"

etc/hadoop/hadoop-env.sh 中有更多的例子。

譯註:要啟用什麼java配置? 這個如果不是很熟悉hadoop的內核,還是不要輕易調整。 但如果是研究性的集群,不煩可以試試,或者遇到死馬的時候,也可以考慮下。

其它一些配置也可以定製,包括:

  • HADOOP_PID_DIR - 守護程式進程id文件所在路徑。
  • HADOOP_LOG_DIR - 守護程式日誌路徑。
  • HADOOP_HEAPSIZE / YARN_HEAPSIZE -  java虛擬機所使用最大記憶體,單位MB。例如如果是1000就是1000MB。預設就是1000MB.可以根據集群的需要調整大小。

大部分情況下,我們應該設定HADOOP_PID_DIR 和 HADOOP_LOG_DIR,這樣只有啟動守護程式的用戶可以寫。否則有潛在的連接攻擊。

一般來說,也需要在系統級別shell環境中配置HADOOP_PREFIX,例如可以在目錄/etc/profile.d下的腳本中設定:

HADOOP_PREFIX=/path/to/hadoop

export HADOOP_PREFIX

譯註:關於是否設置系統級別的環境變數,要看具體環境而定。

 

DaemonEnvironment Variable
ResourceManager YARN_RESOURCEMANAGER_HEAPSIZE
NodeManager YARN_NODEMANAGER_HEAPSIZE
WebAppProxy YARN_PROXYSERVER_HEAPSIZE
Map Reduce Job History Server HADOOP_JOB_HISTORYSERVER_HEAPSIZE

4.2配置hadoop守護程式

譯註:這個小章節,需要讀者格外註意。但本章節中提到的配置僅僅是一些關鍵性的部分,並不包含所有。建議讀者詳細閱讀各個配置文件的default文檔說明

      HDFS設置

  • etc/hadoop/core-site.xml
ParameterValueNotes
fs.defaultFS NameNode URI

hdfs://host:port/

有的地方如果有啟用viewFs,可能首碼不同。但本文只說簡單的。

io.file.buffer.size 131072

Size of read/write buffer used in SequenceFiles.

單位位元組。具體可以參考core-default.xml說明

  • etc/hadoop/hdfs-site.xml

  •  NameNode(名稱節點):

ParameterValueNotes
dfs.namenode.name.dir Path on the local filesystem where the NameNode stores the namespace and transactions logs persistently. 操作系統本地路徑

為了冗餘,可以配置多個路徑,路徑之間使用逗號分隔。既然是冗餘,建議路徑是位於不同的磁碟上。或者是使用raid磁碟,一個路徑即可。

dfs.hosts / dfs.hosts.exclude List of permitted/excluded DataNodes.

允許/禁止的數據節點名稱。具體值是一個文件的全路徑。文件中一行一個主機名稱。也可以不設置。如果允許就可以連接名稱節點。

譯註:不太清楚這個有什麼作用,也許僅僅是為了便於替換加入,或者做擴展測試。

dfs.blocksize 268435456

數據塊大小。可以尾碼單位為(k,m,g,t,p,e),例如128m。也可以沒有尾碼(就是位元組為單位),這裡是256mb。

譯註:數據塊設置多大,和操作系統,每個文件大小,java設置,網路都有關係。

dfs.namenode.handler.count 100

rpc線程個數(LINUX就是進程),用於數據節點和名稱節點之間的通訊。

譯註:如果你有非常多的數據節點,這個就需要設置很大

  •  DataNode(數據節點):
ParameterValueNotes
dfs.datanode.data.dir Comma separated list of paths on the local filesystem of a DataNode where it should store its blocks.

存儲實際的數據塊。可以有多個路徑,之間以逗號分隔。

如果有多個路徑,則必須在每個路徑後跟上設備類型([SSD]/[DISK]/[ARCHIVE]/[RAM_DISK])

如果沒有跟上,則預設是DISK。如果許可權運行,即使目錄不存在,也會創建

關於這個詳細的信息可以參閱http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-hdfs/ArchivalStorage.html

譯註:在將來,這是必須嚴重關註的事情,當然也許更新的版本並不關註這個設置。

      yarn設置

  • etc/hadoop/yarn-site.xml
  •  ResourceManager 和 NodeManager:

ParameterValueNotes
yarn.acl.enable true / false 是否啟用acl,預設不啟用
yarn.admin.acl Admin ACL

acl列表。具體可以參考服務級別授權

yarn.log-aggregation-enable false

啟用或者禁用容器日誌。如果啟用,就會記錄,並且日誌會移動到某個文件系統,例如HDFS。

日誌可以使用Application Timeline Server來查看。

譯註:如果設置為true,則還涉及都許多的配置。

  • ResourceManager:
ParameterValueNotes
yarn.resourcemanager.address ResourceManager host:port for clients to submit jobs. host:port If set, overrides the hostname set in yarn.resourcemanager.hostname.
yarn.resourcemanager.scheduler.address ResourceManager host:port for ApplicationMasters to talk to Scheduler to obtain resources. host:port If set, overrides the hostname set in yarn.resourcemanager.hostname.
yarn.resourcemanager.resource-tracker.address ResourceManager host:port for NodeManagers. host:port If set, overrides the hostname set in yarn.resourcemanager.hostname.
yarn.resourcemanager.admin.address ResourceManager host:port for administrative commands. host:port If set, overrides the hostname set in yarn.resourcemanager.hostname.
yarn.resourcemanager.webapp.address ResourceManager web-ui host:port. host:port If set, overrides the hostname set in yarn.resourcemanager.hostname.
yarn.resourcemanager.hostname ResourceManager host. host Single hostname that can be set in place of setting all yarn.resourcemanager*address resources. Results in default ports for ResourceManager components.
yarn.resourcemanager.scheduler.class ResourceManager Scheduler class. CapacityScheduler (recommended), FairScheduler (also recommended), or FifoScheduler
yarn.scheduler.minimum-allocation-mb Minimum limit of memory to allocate to each container request at the Resource Manager. In MBs
yarn.scheduler.maximum-allocation-mb Maximum limit of memory to allocate to each container request at the Resource Manager. In MBs
yarn.resourcemanager.nodes.include-path / yarn.resourcemanager.nodes.exclude-path List of permitted/excluded NodeManagers.

If necessary, use these files to control the list of allowable NodeManagers.

  • NodeManager:
ParameterValueNotes
yarn.nodemanager.resource.memory-mb Resource i.e. available physical memory, in MB, for given NodeManager Defines total available resources on the NodeManager to be made available to running containers
yarn.nodemanager.vmem-pmem-ratio Maximum ratio by which virtual memory usage of tasks may exceed physical memory The virtual memory usage of each task may exceed its physical memory limit by this ratio. The total amount of virtual memory used by tasks on the NodeManager may exceed its physical memory usage by this ratio.
yarn.nodemanager.local-dirs Comma-separated list of paths on the local filesystem where intermediate data is written. Multiple paths help spread disk i/o.
yarn.nodemanager.log-dirs Comma-separated list of paths on the local filesystem where logs are written. Multiple paths help spread disk i/o.
yarn.nodemanager.log.retain-seconds 10800 Default time (in seconds) to retain log files on the NodeManager Only applicable if log-aggregation is disabled.
yarn.nodemanager.remote-app-log-dir /logs HDFS directory where the application logs are moved on application completion. Need to set appropriate permissions. Only applicable if log-aggregation is enabled.
yarn.nodemanager.remote-app-log-dir-suffix logs Suffix appended to the remote log dir. Logs will be aggregated to ${yarn.nodemanager.remote-app-log-dir}/${user}/${thisParam} Only applicable if log-aggregation is enabled.
yarn.nodemanager.aux-services mapreduce_shuffle Shuffle service that needs to be set for Map Reduce applications.
  •  History Server:
ParameterValueNotes
yarn.log-aggregation.retain-seconds -1 How long to keep aggregation logs before deleting them. -1 disables. Be careful, set this too small and you will spam the name node.
yarn.log-aggregation.retain-check-interval-seconds -1 Time between checks for aggregated log retention. If set to 0 or a negative value then the value is computed as one-tenth of the aggregated log retention time. Be careful, set this too small and you will spam the name node.

 

      mr設置(譯註:這個不是必須的,如果僅僅想使用hdfs和yarn,而使用其它計算引擎,例如spark,presto,impala等)

  • etc/hadoop/mapred-site.xml
  • MapReduce Applications:

ParameterValueNotes
mapreduce.framework.name yarn Execution framework set to Hadoop YARN.
mapreduce.map.memory.mb 1536 Larger resource limit for maps.
mapreduce.map.java.opts -Xmx1024M Larger heap-size for child jvms of maps.
mapreduce.reduce.memory.mb 3072 Larger resource limit for reduces.
mapreduce.reduce.java.opts -Xmx2560M Larger heap-size for child jvms of reduces.
mapreduce.task.io.sort.mb 512 Higher memory-limit while sorting data for efficiency.
mapreduce.task.io.sort.factor 100 More streams merged at once while sorting files.
mapreduce.reduce.shuffle.parallelcopies 50 Higher number of parallel copies run by reduces to fetch outputs from very large number of maps.
  •  MapReduce JobHistory Server:
ParameterValueNotes
mapreduce.jobhistory.address MapReduce JobHistory Server host:port Default port is 10020.
mapreduce.jobhistory.webapp.address MapReduce JobHistory Server Web UI host:port Default port is 19888.
mapreduce.jobhistory.intermediate-done-dir /mr-history/tmp Directory where history files are written by MapReduce jobs.
mapreduce.jobhistory.done-dir /mr-history/done Directory where history files are managed by the MR JobHistory Server.

 

5.監控節點管理器的健康

hadoop提供了一套機制,管理員可以配置節點管理器,讓節點管理器定時運行腳本,以確定節點是否健康。

管理員可以調整腳本,做他們自己需要檢查的項目。如果腳本認為節點不健康,它必須在標註輸出中答應一行內容,開頭是ERROR。節點管理器定時執行這個腳本,並檢查腳本輸出。如果輸出包含ERROR,那麼節點就被認為不健康(unhealthy),資源管理器會把該節點列入黑名單,之後,不再為這個問題節點分配任務。然後,因為節點管理器是不停執行這個腳本,所以如果某個節點恢復健康狀態,那麼這個節點就從資源管理器的黑名單剔除,之後又會被指派任務。

檢點的健康情況,可以通過web界面查看。

etc/hadoop/yarn-site.xml中的以下參數可以控制節點健康監控:

ParameterValueNotes
yarn.nodemanager.health-checker.script.path Node health script

Script to check for node’s health status.

健康檢查腳本瀏覽路徑

yarn.nodemanager.health-checker.script.opts Node health script options Options for script to check for node’s health status.
yarn.nodemanager.health-checker.interval-ms Node health script interval Time interval for running health script.
yarn.nodemanager.health-checker.script.timeout-ms Node health script timeout interval Timeout for health script execution.

檢查檢查腳本不會因為只有一些磁碟有問題,就給出ERROR標記。節點管理器有定期檢查本地磁碟的能力(特別地會去簡單nodemanager-local-dirs 和 nodemanager-log-dirs),如果發現損壞的目錄數已經超過yarn.nodemanager.disk-health-checker.min-healthy-disks所設定的閥值,那麼整個節點就會被認標記為不健康。引導磁碟是否raid,引導此否是否有問題,都會被檢查腳本檢查。

 

6.slaves文件

slave機器(節點),或者說從屬節點,它們必須在文件etc/hadoop/slaves中登記,一個一行。有關程式利用這個文本的內容,一次性在所有的節點上執行相同的命令。為了達成這個目的,各個節點上啟動hadoop的系統用戶賬戶必須互相建立ssh信任。

譯註:如果節點太多,建議使用腳本來構建這樣的信任。

 

7.hadoop機棧敏感

許多hadoop組件是機棧敏感的,它們利用網路拓撲結構來提升性能和安全。hadoop守護程式通過激活一個管理員可配的模塊來獲得機棧信息。

具體參考機棧敏感

嚴重建議:在啟動hdfs之前,需要先配置好機棧敏感。

譯註:機棧敏感,更多是一種邏輯拓撲,但和實際的物理拓撲也有密切的關係。

 

8.日誌

修改etc/hadoop/log4j.properties即可啟用apache log4j。

9.hadoop集群操作

9.1啟動

為了啟動hadoop集群,必須啟動HDFS和YARN集群。(譯註:以下假定hdfs的用戶是hdfs,yarn的用戶是yarn).

啟動之前,必須先格式化

[hdfs]$ $HADOOP_PREFIX/bin/hdfs namenode -format <cluster_name>    --參數cluster_name只有在部署federation(聯合)的時候才需要提供。

 

啟動HDFS


在每個名稱節點上,執行以下命令
[hdfs]$ $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs start namenode

在每個數據節點上執行以下命令
[hdfs]$ $HADOOP_PREFIX/sbin/hadoop-daemons.sh --config $HADOOP_CONF_DIR --script hdfs start datanode


如果有配置ssh信任,並且etc/hadoop/slaves有配置,那麼可以使用以下腳本:
[hdfs]$ $HADOOP_PREFIX/sbin/start-dfs.sh

譯註:本文中這樣的配置,會預設啟動一個第二名稱節點,和名稱節點在同一臺機器上。

 

啟動YARN


使用yarn用戶,在資源管理器節點上運行:
[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR start resourcemanager

在節點管理器上運行以下命令:
[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemons.sh --config $HADOOP_CONF_DIR start nodemanager

 

在webappproxy伺服器上,運行以下命令:
[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR start proxyserver


如果有建立ssh信任和配置etc/hadoop/slaves,那麼可以直接使用以下腳本啟動
[yarn]$ $HADOOP_PREFIX/sbin/start-yarn.sh

MapReduce JobHistory Server由用戶 mapred啟動:
[mapred]$ $HADOOP_PREFIX/sbin/mr-jobhistory-daemon.sh --config $HADOOP_CONF_DIR start historyserver

譯註:mr的作業歷史伺服器,需要單獨啟動。

9.2 關閉

 

關閉HDFS

關閉名稱節點
[hdfs]$ $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs stop namenode

關閉數據節點
[hdfs]$ $HADOOP_PREFIX/sbin/hadoop-daemons.sh --config $HADOOP_CONF_DIR --script hdfs stop datanode


如果有配置ssh信任,並且etc/hadoop/slaves有配置,那麼可以使用以下腳本:
[hdfs]$ $HADOOP_PREFIX/sbin/stop-dfs.sh

關閉YARN


關閉資源管理器
[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR stop resourcemanager

關閉節點管理器
[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemons.sh --config $HADOOP_CONF_DIR stop nodemanager

如果有配置ssh信任,並且etc/hadoop/slaves有配置,那麼可以使用以下腳本:
[yarn]$ $HADOOP_PREFIX/sbin/stop-yarn.sh

關閉yarn的web代理伺服器
[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR stop proxyserver

關閉MR作業歷史伺服器(如果有負載均衡,需要逐個關閉)
[mapred]$ $HADOOP_PREFIX/sbin/mr-jobhistory-daemon.sh --config $HADOOP_CONF_DIR stop historyserver

譯註: 實際關閉集群的時候,應該先關閉yarn,再關閉hdfs。

 

10.web介面

DaemonWeb InterfaceNotes
NameNode http://nn_host:port/ Default HTTP port is 50070,可以查看hdfs文件
ResourceManager http://rm_host:port/ Default HTTP port is 8088.
MapReduce JobHistory Server http://jhs_host:port/ Default HTTP port is 19888.

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

-Advertisement-
Play Games
更多相關文章
  • requests 模塊 模塊的由來: 瀏覽器可以瀏覽網站, 是由於瀏覽器發送了requests , 各種請求.打開一個網站可能有幾十到幾百個請求. 從而伺服器端會反饋各種因應不同請求生成的數據. 我們瀏覽器再decode這些數據來顯示在屏幕上. requests, 就是Python一種用來偽裝成模擬... ...
  • 前 言 mysql mysql語法--本篇學習都是通過使用Navicat Premium(資料庫管理工具),連接mysql數據. 本篇學習主要有兩個部分: 一、創建用戶,創建資料庫,給用戶分配許可權,刪除用戶許可權。 二、MYSQL中常見的數據類型 三、表-創建表、主鍵、外鍵 四、資料庫設計的三大範式 ...
  • Introduction to Schema Objects 資料庫 schema 是存儲數據結構的邏輯容器,被稱為 。例如,表和索引是 通過 SQL 來創建和操作 資料庫用戶具有口令並擁有各種資料庫的許可權,每個用戶擁有一個單獨的 ,schema 與用戶具有相同的名字 schema 包含相應用戶的全 ...
  • create table DEPT ( deptno NUMBER(2) not null, dname VARCHAR2(20), loc VARCHAR2(13) ); alter table DEPT add constraint PK_DEPT primary key (DEPTNO); c ...
  • 前言 - 簡單準備一下前戲 前面寫過幾篇mariadb 數據的隨筆, 多數偏C/C++層面. 這次分享一下平時開發中, 處理的一些數據層面的業務. 對於MariaDB, 不做過多介紹. 如果你有Ubuntu 系統, 可以通過下麵來個環境玩玩 這裡扯一下, 假如你複製mysql 腳本到 mariadb ...
  • 前言 最近一年由於工作需要大部分使用的都是NoSql資料庫,對關係型資料庫感覺越來越陌生,一個由 和`order by` 引發的血案由此而生。在此做個記錄,以備不時之需。 <! more 需求 首先,看一下整體的表結構。 現在查找每個 中最新的數據。 由於數據太多,不是很好看到效果。我們就拿一個 為 ...
  • 前提: 這個月的突然一天,有個項目對接需要使用axis2發佈的介面,這下難倒我了,畢竟之前我是連webservice介面都不知怎麼發佈的。後來從HelloWorld開始發佈了第一個介面--sayHi();到這一步的時候都是很順利的,唯獨和axis2整合的時候,出現問題了,spring的dao層在ax ...
  • 錯誤:Host '127.0.0.1' is not allowed to connect to this MySQL server一般原因: MySQL資料庫的配置文件my.ini中設置了參數: skip-name-resolve 從而導致使用“localhost”不能連接到資料庫。解決方法: 註 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...