本文介紹的Hadoop權(quán)限管理包括以下幾個模塊:
(1) 用戶分組管理 。用于按組為單位組織管理,某個用戶只能向固定分組中提交作業(yè),只能使用固定分組中配置的資源;同時可以限制每個用戶提交的作業(yè)數(shù),使用的資源量等
(2) 作業(yè)管理 。包括作業(yè)提交權(quán)限控制,作業(yè)運行狀態(tài)查看權(quán)限控制等。如:可限定可提交作業(yè)的用戶;可限定可查看作業(yè)運行狀態(tài)的用戶;可限定普通用戶只能修改自己作業(yè)的優(yōu)先級,kill自己的作業(yè);高級用戶可以控制所有作業(yè)等。
想要支持權(quán)限管理需使用Fair Scheduler或者 Capacity Scheduler(作業(yè)管理需用到Hadoop的ACL(Access Control List)功能,啟用該功能需選擇一個支持多隊列管理的調(diào)度器)
2. 基本術(shù)語
(1) 用戶(User) :Hadoop使用Linux用戶管理,Hadoop中的用戶就是Linux中的用戶
(2) 分組(group) :Hadoop使用Linux分組管理,Hadoop中的分組就是Linux中的分組
(3) 池(pool) :Hadoop Fair Scheduler中的概念,一個pool可以是一個user,一個group,或者一個queue。
(4) 隊列(Queue) :隊列是Hadoop提出的概念,一個Queue可以由任意幾個Group和任意幾個User組成。
3. Hadoop中Fair Scheduler與Capacity Scheduler介紹
3.1 Fair Scheduler
Facebook開發(fā)的適合共享環(huán)境的調(diào)度器,支持多用戶多分組管理,每個分組可以配置資源量,也可限制每個用戶和每個分組中的并發(fā)運行作業(yè)數(shù)量;每個用戶的作業(yè)有優(yōu)先級,優(yōu)先級越高分配的資源越多。
3.2 Capacity Scheduler
Yahoo開發(fā)的適合共享環(huán)境的調(diào)度器,支持多用戶多隊列管理,每個隊列可以配置資源量,也可限制每個用戶和每個隊列的并發(fā)運行作業(yè)數(shù)量,也可限制每個作業(yè)使用的內(nèi)存量;每個用戶的作業(yè)有優(yōu)先級,在單個隊列中,作業(yè)按照先來先服務(wù)(實際上是先按照優(yōu)先級,優(yōu)先級相同的再按照作業(yè)提交時間)的原則進行調(diào)度。
3.3 Fair Scheduler vs Capacity Scheduler
(1) 相同點
[1] 均支持多用戶多隊列,即:適用于多用戶共享集群的應(yīng)用環(huán)境
[2] 單個隊列均支持優(yōu)先級和FIFO調(diào)度方式
[3] 均支持資源共享,即某個queue中的資源有剩余時,可共享給其他缺資源的queue
(2) 不同點
[1] 核心調(diào)度策略不同。 計算能力調(diào)度器的調(diào)度策略是,先選擇資源利用率低的queue,然后在queue中同時考慮FIFO和memory constraint因素;而公平調(diào)度器僅考慮公平,而公平是通過作業(yè)缺額體現(xiàn)的,調(diào)度器每次選擇缺額最大的job(queue的資源量,job優(yōu)先級等僅用于計算作業(yè)缺額)。
[2] 內(nèi)存約束。計算能力調(diào)度器調(diào)度job時會考慮作業(yè)的內(nèi)存限制,為了滿足某些特殊job的特殊內(nèi)存需求,可能會為該job分配多個slot;而公平調(diào)度器對這種特殊的job無能為力,只能殺掉這種task。
(3) 功能上的不同
Fair Scheduler不允許配置每個user使用的slot數(shù)上限,但允許搶占資源 ;而Capacity scheduler允許配置每個user使用的slot數(shù)上限,但暫時不支持資源搶占 。
4. 用戶分組管理
以Fair Scheduler(http://hadoop.apache.org/common/docs/r0.20.0/fair_scheduler.html )為例,按以下步驟進行:
(1) 將Fair Scheduler的jar包拷貝到lib中
如:cp ${HADOOP_HOME}/contrib/fairscheduler/hadoop-fairscheduler-0.20.2+320.jar ${HADOOP_HOME}/lib/
(2) 配置Queue相關(guān)信息
具體參考:
http://hadoop.apache.org/common/docs/r0.20.2/cluster_setup.html#Configuring+the+Hadoop+Daemons
在mapred-site.xml中添加以下內(nèi)容:
| 
               
                
        1 
      
               
              
                
        2 
      
               
              
                
        3 
      
               
              
                
        4 
      
               
              
                
        5 
      
               
              
                
        6 
      
               
              
                
        7 
      
               
              
                
        8 
      
               
              
                
        9 
      
               
              
                
        10 
      
               
              
                
        11 
      
               
              
                
        12 
      
               
              
                
        13 
      
               
              
                
        14 
      
               
              
                
        15 
      
               
              
                
        16 
      
               
              
                
        17 
      
               
              
                
        18 
      
               
              
                
        19 
      
               
              
                
        20 
      
               
              
                
        21 
      
               
              
                
        22 
      
               
              
                
        23 
      
               
              
                
        24 
      
               
              
                
        25 
      
               
              
                
        26 
      
               
              
                
        27 
      
               
              
                
        28 
      
               
              
                
        29 
      
               
              
                
        30 
      
               
              
                
        31 
      
               
              
                
        32 
      
               
              
                
        33 
      
               
              
                
        34 
      
               
              
                
        35 
      
               
              
                
        36 
      
               
              
                
        37 
      
               
              
                
        38 
      
               
              
                
        39 
      
               
             | 
            
              
                    <
                  
                  
                    property
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    name
                  
                  
                    >mapred.acls.enabled</
                  
                  
                    name
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    value
                  
                  
                    >true</
                  
                  
                    value
                  
                  
                    >
                  
                
                    </
                  
                  
                    property
                  
                  
                    >
                  
                
                    <
                  
                  
                    property
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    name
                  
                  
                    >mapred.queue.names</
                  
                  
                    name
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    value
                  
                  
                    >my_group,default</
                  
                  
                    value
                  
                  
                    >
                  
                
                    </
                  
                  
                    property
                  
                  
                    >
                  
                
                    <
                  
                  
                    property
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    name
                  
                  
                    >mapred.queue.my_queue.acl-submit-job</
                  
                  
                    name
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    value
                  
                  
                    > my_group</
                  
                  
                    value
                  
                  
                    >
                  
                
                    </
                  
                  
                    property
                  
                  
                    >
                  
                
                    <
                  
                  
                    property
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    name
                  
                  
                    >mapred.queue.default.acl-administer-jobs</
                  
                  
                    name
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    value
                  
                  
                    ></
                  
                  
                    value
                  
                  
                    >
                  
                
                    </
                  
                  
                    property
                  
                  
                    >
                  
                
                    <
                  
                  
                    property
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    name
                  
                  
                    >mapred.queue.my_queue.acl-administer-jobs</
                  
                  
                    name
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    value
                  
                  
                    ></
                  
                  
                    value
                  
                  
                    >
                  
                
                    </
                  
                  
                    property
                  
                  
                    >
                  
                 | 
          
說明:
【1】 屬性mapred.queue.names是queue的所有名字,在這一名字中,必須有一個叫“default”的queue
【2】 每個queue均有一個屬性mapred.queue.<queue-name>.acl-submit-job,用于指定哪些user或者group可以向該queue中提交作業(yè)
【3】每個queue均有一個屬性mapred.queue.<queue-name>.acl-administer-jobs,用于指定哪些user或者group可以管理該queue中的所有作業(yè),即可以kill作業(yè),查看task運行狀態(tài)。一般而言,對于每個隊列,該選項為空即可,表示每個user只能管理自己的作業(yè)。
【4】 每個queue擁有的資源量和其他信息均在另外一個配置文件中指定(對于公平調(diào)度器,可以在fair-scheduler.xml中指定)
【5】 mapred.queue.<queue-name>.acl-submit-job和mapred.queue.<queue-name>.acl-administer-jobs配置方法如下:
用戶和用戶組之間用空格分開,用戶之間用“,”分割,用戶組之間用“,”分割,如果queue的屬性值中只有用戶組,則前面保留一個空格。
(3) 配置fair scheduler相關(guān)信息
在mapred-site.xml中添加以下內(nèi)容:
| 
               
                
        1 
      
               
              
                
        2 
      
               
              
                
        3 
      
               
              
                
        4 
      
               
              
                
        5 
      
               
              
                
        6 
      
               
              
                
        7 
      
               
              
                
        8 
      
               
              
                
        9 
      
               
              
                
        10 
      
               
              
                
        11 
      
               
              
                
        12 
      
               
              
                
        13 
      
               
              
                
        14 
      
               
              
                
        15 
      
               
              
                
        16 
      
               
              
                
        17 
      
               
              
                
        18 
      
               
              
                
        19 
      
               
              
                
        20 
      
               
              
                
        21 
      
               
              
                
        22 
      
               
              
                
        23 
      
               
             | 
            
              
                    <
                  
                  
                    property
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    name
                  
                  
                    >mapred.jobtracker.taskScheduler</
                  
                  
                    name
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    value
                  
                  
                    >org.apache.hadoop.mapred.FairScheduler</
                  
                  
                    value
                  
                  
                    >
                  
                
                    </
                  
                  
                    property
                  
                  
                    >
                  
                
                    <
                  
                  
                    property
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    name
                  
                  
                    >mapred.fairscheduler.poolnameproperty</
                  
                  
                    name
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    value
                  
                  
                    >mapred.job.queue.name</
                  
                  
                    value
                  
                  
                    >
                  
                
                    </
                  
                  
                    property
                  
                  
                    >
                  
                
                    <
                  
                  
                    property
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    name
                  
                  
                    >mapred.fairscheduler.allocation.file</
                  
                  
                    name
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    value
                  
                  
                    >/home/XXX/hadoop/conf/fair-scheduler.xml</
                  
                  
                    value
                  
                  
                    >
                  
                
                    </
                  
                  
                    property
                  
                  
                    >
                  
                 | 
          
說明:
mapred.fairscheduler.poolnameproperty有三個可用值:默認情況下是user.name,即每個用戶獨自一個pool;group.name,即一個linux group一個pool,mapred.job.queue.name,即一個queue一個pool,如果要支持“作業(yè)管理”,需使用最后一種配置。
(4) 創(chuàng)建文件fair-scheduler.xml,并添加以下內(nèi)容:
| 
               
                
        1 
      
               
              
                
        2 
      
               
              
                
        3 
      
               
              
                
        4 
      
               
              
                
        5 
      
               
              
                
        6 
      
               
              
                
        7 
      
               
              
                
        8 
      
               
              
                
        9 
      
               
              
                
        10 
      
               
              
                
        11 
      
               
              
                
        12 
      
               
              
                
        13 
      
               
              
                
        14 
      
               
              
                
        15 
      
               
              
                
        16 
      
               
              
                
        17 
      
               
              
                
        18 
      
               
              
                
        19 
      
               
              
                
        20 
      
               
              
                
        21 
      
               
              
                
        22 
      
               
              
                
        23 
      
               
              
                
        24 
      
               
              
                
        25 
      
               
              
                
        26 
      
               
              
                
        27 
      
               
              
                
        28 
      
               
              
                
        29 
      
               
              
                
        30 
      
               
              
                
        31 
      
               
              
                
        32 
      
               
              
                
        33 
      
               
             | 
            
              
                    <?
                  
                  
                    xml
                  
                  
                    version
                  
                  
                    =
                  
                  
                    "1.0"
                  
                  
                    ?>
                  
                
                    <
                  
                  
                    allocations
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    pool
                  
                  
                    name
                  
                  
                    =
                  
                  
                    "my_queue"
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    minMaps
                  
                  
                    >10</
                  
                  
                    minMaps
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    minReduces
                  
                  
                    >10</
                  
                  
                    minReduces
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    maxRunningJobs
                  
                  
                    >10</
                  
                  
                    maxRunningJobs
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    minSharePreemptionTimeout
                  
                  
                    >300</
                  
                  
                    minSharePreemptionTimeout
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    weight
                  
                  
                    >2.0</
                  
                  
                    weight
                  
                  
                    >
                  
                
                    </
                  
                  
                    pool
                  
                  
                    >
                  
                
                    <
                  
                  
                    user
                  
                  
                    name
                  
                  
                    =
                  
                  
                    "bob"
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    maxRunningJobs
                  
                  
                    >5</
                  
                  
                    maxRunningJobs
                  
                  
                    >
                  
                
                    </
                  
                  
                    user
                  
                  
                    >
                  
                
                    <
                  
                  
                    poolMaxJobsDefault
                  
                  
                    >25</
                  
                  
                    poolMaxJobsDefault
                  
                  
                    >
                  
                
                    <
                  
                  
                    userMaxJobsDefault
                  
                  
                    >2</
                  
                  
                    userMaxJobsDefault
                  
                  
                    >
                  
                
                    <
                  
                  
                    defaultMinSharePreemptionTimeout
                  
                  
                    >600</
                  
                  
                    defaultMinSharePreemptionTimeout
                  
                  
                    >
                  
                
                    <
                  
                  
                    fairSharePreemptionTimeout
                  
                  
                    >600</
                  
                  
                    fairSharePreemptionTimeout
                  
                  
                    >
                  
                
                    </
                  
                  
                    allocations
                  
                  
                    >
                  
                 | 
          
說明:
【1】各個字段的含義
<pool></pool>之間配置的是每個pool的信息,主要如下:
(a) minMaps:該pool可使用的map slot數(shù)
(b) minReduces:該pool可使用的reduce slot數(shù)
(c) maxRunningJobs:該pool最大運行作業(yè)數(shù)
(d) minSharePreemptionTimeout:該pool搶占資源的時間間隔,即本屬于自己的資源在改時間內(nèi)拿不到便會搶占。
(e) Weight:pool的權(quán)重,該值越大,能夠從共享區(qū)(有一些pool中的資源用不完,會共享給其他pool)中獲取的資源越多。
<user></user>之間配置某個用戶的約束:
maxRunningJobs:該用戶可同時運行的作業(yè)數(shù)
<poolMaxJobsDefault></poolMaxJobsDefault>之間配置默認情況下每個pool最大運行作業(yè)數(shù)
<userMaxJobsDefault></userMaxJobsDefault>之間配置默認情況下每個user最大運行作業(yè)數(shù)
……
【2】 該配置文件中可動態(tài)修改無需重啟Hadoop(修改后3s會被重新加載)
5. 作業(yè)管理
作業(yè)管理模塊由Hadoop的ACL(http://hadoop.apache.org/common/docs/r0.20.2/service_level_auth.html )完成。
(1) 在core-site.xmll中配置以下屬性:
| 
               
                
        1 
      
               
              
                
        2 
      
               
              
                
        3 
      
               
              
                
        4 
      
               
              
                
        5 
      
               
              
                
        6 
      
               
              
                
        7 
      
               
             | 
            
              
                    <
                  
                  
                    property
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    name
                  
                  
                    >hadoop.security.authorization</
                  
                  
                    name
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    value
                  
                  
                    >true</
                  
                  
                    value
                  
                  
                    >
                  
                
                    </
                  
                  
                    property
                  
                  
                    >
                  
                 | 
          
(2) 配置${HADOOP_CONF_DIR}/hadoop-policy.xml
Hadoop有9個可配置的ACL屬性,每個屬性可指定擁有相應(yīng)訪問權(quán)限的用戶或者用戶組。這9個ACL屬性如下:
    
  
這9個ACL的配置方法相同,具體如下:
每個ACL可配置多個用戶,用戶之間用“,”分割;可配置多個用戶組,分組之間用“,”分割, 用戶和分組之間用空格分割,如果只有分組,前面保留一個空格,如:
| 
               
                
        1 
      
               
              
                
        2 
      
               
              
                
        3 
      
               
              
                
        4 
      
               
              
                
        5 
      
               
              
                
        6 
      
               
              
                
        7 
      
               
             | 
            
              
                    <
                  
                  
                    property
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    name
                  
                  
                    >security.job.submission.protocol.acl</
                  
                  
                    name
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    value
                  
                  
                    >alice,bob group1,group2</
                  
                  
                    value
                  
                  
                    >
                  
                
                    </
                  
                  
                    property
                  
                  
                    >
                  
                 | 
          
說明: 用戶alice和bob, 分組group1和group2可提交作業(yè)
又如:
| 
               
                
        1 
      
               
              
                
        2 
      
               
              
                
        3 
      
               
              
                
        4 
      
               
              
                
        5 
      
               
              
                
        6 
      
               
              
                
        7 
      
               
             | 
            
              
                    <
                  
                  
                    property
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    name
                  
                  
                    > security.client.protocol.acl </
                  
                  
                    name
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    value
                  
                  
                    > group3</
                  
                  
                    value
                  
                  
                    >
                  
                
                    </
                  
                  
                    property
                  
                  
                    >
                  
                 | 
          
說明:只有g(shù)roup3可訪問HDFS
| 
               
                
        1 
      
               
              
                
        2 
      
               
              
                
        3 
      
               
              
                
        4 
      
               
              
                
        5 
      
               
              
                
        6 
      
               
              
                
        7 
      
               
             | 
            
              
                    <
                  
                  
                    property
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    name
                  
                  
                    >security.client.protocol.acl</
                  
                  
                    name
                  
                  
                    >
                  
                
                  
                    <
                  
                  
                    value
                  
                  
                    >*</
                  
                  
                    value
                  
                  
                    >
                  
                
                    </
                  
                  
                    property
                  
                  
                    >
                  
                 | 
          
說明:所有用戶和分組均可訪問HDFS
注意,默認情況下,這9個屬性不對任何用戶和分組開放。
該配置文件可使用以下命令動態(tài)加載:
(1) 更新namenode相關(guān)屬性: bin/hadoop dfsadmin –refreshServiceAcl
(2) 更新jobtracker相關(guān)屬性:bin/hadoop mradmin -refreshServiceAcl
6. 提交作業(yè)
用戶提交作業(yè)時,需用mapred.job.queue.name屬性告訴Hadoop你要將作業(yè)提交到哪個Queue中,具體如下:
(1) 如果你是用Java編寫Hadoop作業(yè),用-D mapred.job.queue.name指明提交到哪個queue,如:
| 
               
                
        1 
      
               
              
                
        2 
      
               
              
                
        3 
      
               
              
                
        4 
      
               
              
                
        5 
      
               
              
                
        6 
      
               
              
                
        7 
      
               
              
                
        8 
      
               
              
                
        9 
      
               
             | 
            
              
                    $HADOOP_HOME
                  
                  
                    /
                  
                  
                    bin
                  
                  
                    /
                  
                  
                    hadoop jar wordcount.jar wordcount \
                  
                
                  
                    -
                  
                  
                    D mapred.
                  
                  
                    map
                  
                  
                    .tasks
                  
                  
                    =
                  
                  
                    1
                  
                  
                    \
                  
                
                  
                    -
                  
                  
                    D mapred.
                  
                  
                    reduce
                  
                  
                    .tasks
                  
                  
                    =
                  
                  
                    1
                  
                  
                    \
                  
                
                  
                    -
                  
                  
                    D mapred.job.queue.name
                  
                  
                    =
                  
                  
                    infrastructure \
                  
                
                  
                    Input
                  
                  
                    ouput
                  
                 | 
          
(2) 如果你使用Hadoop Pipes編寫作業(yè),用-D mapred.job.queue.name指明提交到哪個queue,如:
| 
               
                
        1 
      
               
              
                
        2 
      
               
              
                
        3 
      
               
              
                
        4 
      
               
              
                
        5 
      
               
              
                
        6 
      
               
              
                
        7 
      
               
              
                
        8 
      
               
              
                
        9 
      
               
              
                
        10 
      
               
              
                
        11 
      
               
             | 
            
              
                    $HADOOP_HOME
                  
                  
                    /
                  
                  
                    bin
                  
                  
                    /
                  
                  
                    hadoop pipes \
                  
                
                  
                    -
                  
                  
                    D hadoop.pipes.executable
                  
                  
                    =
                  
                  
                    /
                  
                  
                    examples
                  
                  
                    /
                  
                  
                    bin
                  
                  
                    /
                  
                  
                    wordcount \
                  
                
                  
                    -
                  
                  
                    D hadoop.pipes.java.recordreader
                  
                  
                    =
                  
                  
                    true \
                  
                
                  
                    -
                  
                  
                    D hadoop.pipes.java.recordwriter
                  
                  
                    =
                  
                  
                    true \
                  
                
                  
                    -
                  
                  
                    D mapred.job.queue.name
                  
                  
                    =
                  
                  
                    my_group \
                  
                
                  
                    -
                  
                  
                    input
                  
                  
                    in
                  
                  
                    -
                  
                  
                    dir
                  
                  
                    -
                  
                  
                    output out
                  
                  
                    -
                  
                  
                    dir
                  
                 | 
          
(3) 如果你使用Hadoop Streaming編寫作業(yè),用-D mapred.job.queue.name指明提交到哪個queue,如:
| 
               
                
        1 
      
               
              
                
        2 
      
               
              
                
        3 
      
               
              
                
        4 
      
               
              
                
        5 
      
               
              
                
        6 
      
               
              
                
        7 
      
               
              
                
        8 
      
               
              
                
        9 
      
               
              
                
        10 
      
               
              
                
        11 
      
               
             | 
            
              
                    $HADOOP_HOME
                  
                  
                    /
                  
                  
                    bin
                  
                  
                    /
                  
                  
                    hadoop jar $HADOOP_HOME
                  
                  
                    /
                  
                  
                    hadoop
                  
                  
                    -
                  
                  
                    streaming.jar \
                  
                
                  
                    -
                  
                  
                    input
                  
                  
                    myInputDirs \
                  
                
                  
                    -
                  
                  
                    output myOutputDir \
                  
                
                  
                    -
                  
                  
                    mapper myPythonScript.py \
                  
                
                  
                    -
                  
                  
                    reducer 
                  
                  
                    /
                  
                  
                    bin
                  
                  
                    /
                  
                  
                    wc \
                  
                
                  
                    -
                  
                  
                    D mapred.job.queue.name
                  
                  
                    =
                  
                  
                    my_group
                  
                 | 
          
7. 參考資料
http://hadoop.apache.org/common/docs/r0.20.2/cluster_setup.html#Configuring+the+Hadoop+Daemons
http://hadoop.apache.org/common/docs/r0.20.2/service_level_auth.html
http://hadoop.apache.org/common/docs/r0.20.0/fair_scheduler.html
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
					微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
					
