hadoop2集群環境搭建

来源:https://www.cnblogs.com/hongten/archive/2018/10/28/hongten_hadoop.html
-Advertisement-
Play Games

在查詢了很多資料以後,發現國內外沒有一篇關於hadoop2集群環境搭建的詳細步驟的文章。 所以,我想把我知道的分享給大家,方便大家交流。 ...


在查詢了很多資料以後,發現國內外沒有一篇關於hadoop2集群環境搭建的詳細步驟的文章。

所以,我想把我知道的分享給大家,方便大家交流。

以下是本文的大綱:

1. 在windows7 下麵安裝虛擬機
2.在虛擬機上面安裝linux操作系統
3.啟動Linux操作系統
4.修改hostname
       4.1.在node1上面修改hostname
       4.2.在node2上面修改hostname
       4.3.在node3上面修改hostname
       4.4.在node4上面修改hostname
       4.5.重啟4台機器,hostname會永久生效
5.安裝JDK
6.免密碼登錄
7.Linux功能變數名稱解析配置
8.Windows功能變數名稱解析配置
9.節點分佈方案
10.zookeeper的解壓縮和安裝
11.Hadoop壓縮包安裝
       11.1.修改hadoop-evn.sh
       11.2.修改hdfs-site.xml
       11.3.修改core-site.xml
       11.4.配置datanode
12.在node2, node3, node4上安裝hadoop
13.啟動JournalNodes
14.在第一個namenode(node1)上面進行格式化操作並啟動namenode
15.拷貝拷貝元數據文件到第二個namenode
16.停止所有服務
17.格式化zookeeper

18.配置mapreduce
19.啟動所有服務
20.測試是否成功
21.上傳文件測試

 

若有不正之處,還請多多諒解,並希望批評指正。

請尊重作者勞動成果,轉發請標明blog地址

https://www.cnblogs.com/hongten/p/hongten_hadoop.html

 

正所謂磨刀不費砍材功,下麵的工具大家可以先下載備用。

環境及工具:

Windows 7 (64位)下麵的虛擬機(64位):VMware-workstation-full-14.0.0-6661328.exe

Linux操作系統:CentOS-6.5-x86_64-bin-DVD1.iso

Xshell:Xshell-6.0.0101p.exe  

WinSCP:從windows上面上傳文件到Linux

JDK:jdk-7u67-linux-x64.rpm

zookeeper:zookeeper-3.4.6.tar.gz

hadoop:hadoop-2.5.1_x64.tar.gz  

鏈接:https://pan.baidu.com/s/1hvdbGUh488Gl1EF2v44BIw
提取碼:ncdd

 

在做好準備工作後,我們就可以來手動搭建hadoop集群

1. 在windows7 下麵安裝虛擬機

安裝說明已經激活碼請點擊上面虛擬機鏈接。

VMware Workstation Pro v14.0

*註:上述鏈接提供的安裝包僅支持Windows 7及以上操作系統的64位版,已經不支持32位版的操作系統!

激活碼:FF31K-AHZD1-H8ETZ-8WWEZ-WUUVA

 

2.在虛擬機上面安裝linux操作系統

這裡我把RedHat,Ubuntu,CentOS都安裝過了,最後感覺CentOS好用一點(個人覺得,哈哈哈)

CentOS-6.5-x86_64-bin-DVD1.iso
  After the installation is complete, please run "yum update" in order to update your system.

安裝好Linux後,需要運行 'yum update' 命令。這裡是需要花一點時間的,(我花了大概十多分鐘的樣子來執行yum update)。

在虛擬機裡面,我安裝了4台相同配置的CentOS。

 

3.啟動Linux操作系統

在虛擬機裡面啟動4台機器。然後都以root賬號進行登錄。

啟動完以後,我們要記錄各個node(節點)ip地址(下麵是我機器上面的ip地址情況)

//四台Linux的ip地址
192.168.79.133 node1
192.168.79.134 node2
192.168.79.135 node3
192.168.79.136 node4

*註:在Linux裡面查看ip的命令是ifconfig

//在node4上面的ip地址情況
[root@node4 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:80:01:39  
          inet addr:192.168.79.136  Bcast:192.168.79.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe80:139/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:201532 errors:0 dropped:0 overruns:0 frame:0
          TX packets:27023 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:275203684 (262.4 MiB)  TX bytes:4283436 (4.0 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:18 errors:0 dropped:0 overruns:0 frame:0
          TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1064 (1.0 KiB)  TX bytes:1064 (1.0 KiB)

You have new mail in /var/spool/mail/root

 

4.修改hostname

剛開始的時候,我們在4台機器上看到的都是如下的hostname

[root@localhost ~]

我們現在要把他們修改為

[root@node1 ~]
[root@node2 ~]
[root@node3 ~]
[root@node4 ~]

我們為什麼要修改hostname呢?

因為我們要在下麵的配置文件裡面添加這些節點名稱,如node1,node2,node3, node4.

那麼我們應該怎樣做呢?下麵給出了方法。

4.1.在node1上面修改hostname

--http://www.cnblogs.com/kerrycode/p/3595724.html(深入理解Linux修改hostname)
--在node1上面運行
vi /etc/sysconfig/network
--設置hostname=node1
:qw

--再運行
sysctl kernel.hostname=node1

4.2.在node2上面修改hostname

--http://www.cnblogs.com/kerrycode/p/3595724.html(深入理解Linux修改hostname)
--在node2上面運行
vi /etc/sysconfig/network
--設置hostname=node2
:qw

--再運行
sysctl kernel.hostname=node2

4.3.在node3上面修改hostname

--http://www.cnblogs.com/kerrycode/p/3595724.html(深入理解Linux修改hostname)
--在node3上面運行
vi /etc/sysconfig/network
--設置hostname=node3
:qw

--再運行
sysctl kernel.hostname=node3

4.4.在node4上面修改hostname

--http://www.cnblogs.com/kerrycode/p/3595724.html(深入理解Linux修改hostname)
--在node4上面運行
vi /etc/sysconfig/network
--設置hostname=node4
:qw

--再運行
sysctl kernel.hostname=node4

4.5.重啟4台機器,hostname會永久生效

*註:在Linux裡面查看ip情況,看看是否有變化。如果有變化,則調整相應的ip所對應的節點。

--我虛擬機裡面的ip情況
192.168.79.133 node1
192.168.79.134 node2
192.168.79.135 node3
192.168.79.136 node4

 

5.安裝JDK

把我們下載好的jdk-7u67-linux-x64.rpm通過WinSCP上傳到4台機器的根目錄上。

--在node1, node2, node3, node4上面安裝jdk
--install JDK   -- http://blog.51cto.com/vvxyz/1642258(LInux安裝jdk的三種方法)
--解壓安裝
rpm -ivh your-package.rpm

--修改環境變數
vi /etc/profile

JAVA_HOME=/usr/java/jdk1.7.0_67
JRE_HOME=/usr/java/jdk1.7.0_67/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

:wq

--使配置有效
source /etc/profile

*註:在4個節點上都要安裝JDK。

 

6.免密碼登錄

--免密碼登錄
--分別在node1, node2, node3, node4,上面運行
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

--在node1上面運行,拷貝node1的公鑰到node2,node3,node4上面的根目錄裡面去
scp id_rsa.pub root@node2:~
scp id_rsa.pub root@node3:~
scp id_rsa.pub root@node4:~

--分別進入node2, node3, node4運行,把node1的公鑰追加到~/.ssh/authorized_keys文件裡面
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

--測試
--在node1上面運行下麵命令,應該都能夠免密碼登錄,即成功。
ssh node1 ssh node2 ssh node3 ssh node4

*註:我在這裡遇到很多坑,最後還是搞定了。

 

7.Linux功能變數名稱解析配置

--修改功能變數名稱解析conf hosts
--在node1上面運行下麵命令
vi /etc/hosts

--根據自己機器上面的ip進行配置
192.168.79.134 node1
192.168.79.135 node2
192.168.79.133 node3
192.168.79.136 node4

:wq

--copy hosts file to node2, node3, node4
scp /etc/hosts root@node2:/etc/
scp /etc/hosts root@node3:/etc/
scp /etc/hosts root@node4:/etc/

 

8.Windows功能變數名稱解析配置

--windows 功能變數名稱解析
--打開C:/WINDOWS/system32/drivers/etc/hosts文件
--把下麵的信息複製到文件最後尾 -- 根據自己機器ip進行配置
192.168.79.134 node1
192.168.79.135 node2
192.168.79.133 node3
192.168.79.136 node4

為什麼要做這個呢?

因為下麵我們會在瀏覽器裡面輸入http:node1:50070進行測試,就會用到這個配置了。

 

9.節點分佈方案

*註:打鉤的表示在該節點上有相對應的服務。

 

10.zookeeper的解壓縮和安裝

--解壓zookeeper壓縮包並安裝
tar -zxvf zookeeper-3.4.6.tar.gz 

--創建zookeeper的軟鏈
ln -sf /root/zookeeper-3.4.6 /home/zk

--配置zookeeper
cd /home/zk/conf/

--把下麵的zoo_sample.cfg文件重新命名
cp zoo_sample.cfg zoo.cfg

--修改zoo.cfg配置文件
vi zoo.cfg

--設置zookeeper的文件存放目錄
--找到dataDir=/tmp/zookeeper,並設置為下麵值
dataDir=/opt/zookeeper

--設置zookeeper集群
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888

:wq

--創建/opt/zookeeper目錄
mkdir /opt/zookeeper

--進入/opt/zookeeper目錄
cd /opt/zookeeper

--創建一個文件myid
vi myid

--輸入1
1
:wq
--以此類推,在node2,node3,值分別是2, 3

--拷貝zookeeper目錄到node2, node3的/opt/目錄下麵
cd ..
scp -r zookeeper/ root@node2:/opt/
scp -r zookeeper/ root@node3:/opt/

--分別進入到node2, node3裡面,修改/opt/zookeeper/myid,值分別是2, 3

--作為以上配置,把node1裡面的zookeeper拷貝到node2, node3上面。
scp -r zookeeper-3.4.6 root@node2:~/
scp -r zookeeper-3.4.6 root@node3:~/

--分別進入到node2, node3裡面,創建軟鏈
ln -sf /root/zookeeper-3.4.6/ /home/zk

--配置zookeeper環境變數
cd /home/zk/bin

--修改/etc/profile文件,把zookeeper的bin目錄路徑添加進去
vi /etc/profile
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:/home/zk/bin

--讓配置文件生效
source /etc/profile

--分別進入到node2, node3裡面,修改/etc/profile文件,把zookeeper的bin目錄路徑添加進去

--作為環境變數配置,就可以啟動zookeeper了。
--分別在node1, node2, node3上面啟動zookeeper
zkServer.sh start

--測試是否啟動成功
jps
--觀察是否有QuorumPeerMain進程

 

11.Hadoop壓縮包安裝

--解壓Hadoop壓縮包安裝
--在node1上面安裝
tar -zxvf hadoop-2.5.1_x64.tar.gz

--解壓完,創建一個軟鏈到home目錄下麵
ln -sf /root/hadoop-2.5.1 /home/hadoop-2.5

--進入hadoop中進行文件配置
cd /home/hadoop-2.5/etc/hadoop/

11.1.修改hadoop-evn.sh

--1.修改hadoop-evn.sh
--修改JAVA_HOME配置
vi hadoop-env.sh

--The java implementation to use. 根據上面JDK的配置信息
export JAVA_HOME=/usr/java/jdk1.7.0_67

:wq

11.2.修改hdfs-site.xml

--2.修改hdfs-site.xml
vi hdfs-site.xml

--2.1.配置dfs.nameservices - the logical name for this new nameservice
--服務名稱
<property>
  <name>dfs.nameservices</name>
  <value>mycluster</value>
</property>

--2.2.配置namenode節點名稱。這裡的名稱是namenode的名稱,不是主機名(hostname)。
<property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>

--2.3.配置RPC協議和埠
--有多少namenode,就需要配置多少次。
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>node1:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>node2:8020</value>
</property>

--2.4.配置HTTP協議和主機
--這裡也是針對上面的namenode
--有多少namenode,就需要配置多少次。
<property>
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>node1:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>node2:50070</value>
</property>

--2.5.配置dfs.namenode.shared.edits.dir
--the URI which identifies the group of JNs(JournalNodes) where the NameNodes will write/read edits
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://node2:8485;node3:8485;node4:8485/mycluster</value>
</property>

--2.6.配置客戶端使用的一個類,固定配置
--作用:客戶端使用該類去找到active namenode
<property>
  <name>dfs.client.failover.proxy.provider.mycluster</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

--2.7.配置sshfence
--這裡配置的私鑰路徑,是根據上面免密登錄設置的路徑
--ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
<property>
  <name>dfs.ha.fencing.methods</name>
  <value>sshfence</value>
</property>

<property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/root/.ssh/id_rsa</value>
</property>

--2.8.配置JournalNodes的工作目錄
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/opt/jn/data</value>
</property>

--------
--以上基本配置完成
--下麵進行自動切換配置

--2.9.配置自動切換
--自動切換配置好了以後,可以允許手動切換
<property>
  <name>dfs.ha.automatic-failover.enabled</name>
  <value>true</value>
</property>

:wq

下麵是完整的配置信息(hdfs-site.xml配置)

<configuration>
<property>
  <name>dfs.nameservices</name>
  <value>mycluster</value>
</property>

<property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>

<property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>

<property>
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>node1:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>node2:8020</value>
</property>

<property>
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>node1:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>node2:50070</value>
</property>

<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://node2:8485;node3:8485;node4:8485/mycluster</value>
</property>

<property>
  <name>dfs.client.failover.proxy.provider.mycluster</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

<property>
  <name>dfs.ha.fencing.methods</name>
  <value>sshfence</value>
</property>

<property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/root/.ssh/id_rsa</value>
</property>

<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/opt/jn/data</value>
</property>

<property>
  <name>dfs.ha.automatic-failover.enabled</name>
  <value>true</value>
</property>
</configuration>

11.3.修改core-site.xml

--修改core-site.xml
vi core-site.xml

--3.1.配置namenode入口
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://mycluster</value>
</property>

--3.2.配置ZooKeeper集群
<property>
  <name>ha.zookeeper.quorum</name>
  <value>node1:2181,node2:2181,node3:2181</value>
</property>

--3.3.修改hadoop的臨時目錄
<property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/hadoop2</value>
</property>

:wq

下麵是完整的配置信息(core-site.xml配置)

<configuration>
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://mycluster</value>
</property>

<property>
  <name>ha.zookeeper.quorum</name>
  <value>node1:2181,node2:2181,node3:2181</value>
</property>

<property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/hadoop2</value>
</property>
</configuration>

11.4.配置datanode

cd /home/hadoop-2.5/etc/hadoop/

vi slaves
--輸入
node2
node3
node4

:wq

*註:以上為hadoop的配置

 

12.在node2, node3, node4上安裝hadnoop

--拷貝hadoop到node2, node3, node4上去
scp hadoop-2.5.1_x64.tar.gz root@node2:~/
scp hadoop-2.5.1_x64.tar.gz root@node3:~/
scp hadoop-2.5.1_x64.tar.gz root@node4:~/

--然後分別進入到node2,node3, node4上面去解壓縮文件,分別創建軟鏈
cd ~
tar -zxvf hadoop-2.5.1_x64.tar.gz

ln -sf /root/hadoop-2.5.1 /home/hadoop-2.5

--回到node1, 進入到/home/hadoop-2.5/etc/hadoop/目錄
cd /home/hadoop-2.5/etc/hadoop/


--把所有配置文件拷貝到node2,node3, node4上面的/home/hadoop-2.5/etc/hadoop/目錄下麵
--這樣做的目的是保證,所有機器上面的配置文件都一樣
scp ./* root@node2:/home/hadoop-2.5/etc/hadoop/
scp ./* root@node3:/home/hadoop-2.5/etc/hadoop/
scp ./* root@node4:/home/hadoop-2.5/etc/hadoop/

 

13.啟動JournalNodes

--做完這些後,就可以啟動JournalNodes
--去到node2, node3, node4
cd /home/hadoop-2.5/sbin/

./hadoop-daemon.sh start journalnode

--檢查是否啟動成功:
jps
--檢查是否有:JournalNode

 

14.在第一個namenode(node1)上面進行格式化操作並啟動namenode

--在第一個namenode上面進行格式化操作
--進入node1
cd /home/hadoop-2.5/bin

./hdfs namenode -format

--格式化成功後,會在/opt/hadoop2/dfs/name/current/目錄下麵生成元數據文件
cd /opt/hadoop2/dfs/name/current


--需要把元數據文件拷貝到第二個namenode上面去。
--在拷貝之前,需要啟動剛剛格式化後的namenode(node1)
cd /home/hadoop-2.5/sbin/

./hadoop-daemon.sh start namenode

--查看是否啟動成功
jps
--檢查是否包含:NameNode

 

15.拷貝拷貝元數據文件到第二個namenode

--然後去到node2上去。要保證第一個(即格式化後的namenode(node1)要先啟動--運行著的狀態)
--執行拷貝元數據文件命令

cd /home/hadoop-2.5/bin/

./hdfs namenode -bootstrapStandby

--檢查是否拷貝成功:
cd /opt/hadoop2/dfs/name/current/

--查看是否有元數據
ls

 

16.停止所有服務

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

-Advertisement-
Play Games
更多相關文章
  • nbtstat -A ip 對方136到139其中一個埠開了的話,就可查看對方最近登陸的用戶名(03前的為用戶名)-註意:參數-A要大寫 tracert -參數 ip(或電腦名) 跟蹤路由(數據包),參數:“-w數字”用於設置超時間隔。 ping ip(或功能變數名稱) 向對方主機發送預設大小為32位元組 ...
  • 第1節 查看當前系統版本及內核 cat /etc/redhat-release (查看系統版本) CentOS Linux release 7.4.1708 (Core) uname -r (查看系統內核) 3.10.0-693.el7.x86_64 uname -a (查看當前操作系統) x86_ ...
  • 安裝redis 部署集群 參考資料 https://www.cnblogs.com/it-cen/p/4295984.html https://blog.csdn.net/naixiyi/article/details/51346880 https://www.cnblogs.com/Patrick ...
  • mkfs 在磁碟分區上創建ext2、ext3、ext4、ms-dos、vfat文件系統,預設情況下會創建ext2。mkfs用於在設備上構建Linux文件系統,通常是硬碟分區。文件要麼是設備名稱(例如/dev/hda1,/dev/sdb2),要麼是包含文件系統的常規文件。成功返回0,失敗返回1。 實際 ...
  • 有時候,管理員終端登陸了系統,如果離開沒有退出賬戶,則會有安全隱患存在,因此需要優化終端超時。 設置終端超時: export TMOUT=10 永久生效: echo "export TMOUT=600" >>/etc/profile source /etc/profile 檢查是否生效: ...
  • 目的:表操作(表維護) 一、一對一(略過) 二、一對 1、建表原則:在多的一方創建外鍵指向一的一方的外鍵 2、建表:實體中添加 3、操作 1、參數: name屬性:集合屬性名 column屬性: 外鍵列名 class屬性: 與我關聯的對象完整類名 2、級聯操作: cascade save-updat ...
  • Spark 中有兩個類似的api,分別是 reduceByKey 和 groupByKey 。這兩個的功能類似,但底層實現卻有些不同,那麼為什麼要這樣設計呢?我們來從源碼的角度分析一下。 先看兩者的調用順序(都是使用預設的Partitioner,即defaultPartitioner) 所用 spa ...
  • 【前言】在配置主從的時候經常會用到這兩個語句,剛開始的時候還不清楚這兩個語句的使用特性和使用場景。 經過測試整理了以下文檔,希望能對大家有所幫助; 【一】RESET MASTER參數 功能說明:刪除所有的binglog日誌文件,並將日誌索引文件清空,重新開始所有新的日誌文件。用於第一次進行搭建主從庫 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...