十:HDFS Short-Circuit Local Reads 短路本地讀取


    當client請求數據時,datanode會讀取數據然后通過TCP協議發送給client.short-circuit繞過了datanode直接讀取數據。short-circuit的前提是client和數據在同一個結點上。
    short-circuit需要libhadoop.so,一個本地庫。該功能使用unix套接字,client和node通過套接字連接,需要對這個套接字設置一個路徑,並且datanode有創建這個路徑的權限,一般建在/var/run或者/var/lib。client和datanode通過共享內在/dev/shm交換數據。
    client和datanode都要進行配置;

Example Configuration

Here is an example configuration.

<configuration>
  <property>
    <name>dfs.client.read.shortcircuit</name>
    <value>true</value>
  </property>
  <property>
    <name>dfs.domain.socket.path</name>
    <value>/var/lib/hadoop-hdfs/dn_socket</value>
  </property>
</configuration>

    

舊式的short-circuit本地讀依然被支持,但是配置不一樣,要注意其安全性:
<configuration>
  <property>
    <name>dfs.client.read.shortcircuit</name>
    <value>true</value>
  </property>
  <property>
    <name>dfs.client.use.legacy.blockreader.local</name>
    <value>true</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir.perm</name>
    <value>750</value>
  </property>
  <property>
    <name>dfs.block.local-path-access.user</name>
    <value>foo,bar</value>
  </property>
</configuration>









免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM