1.HDFSçº å ç
2.关于linux学习路线的源码阅读问题 请教前辈
3.怎么投eos区块链,怎么投eos区块链链接
4.Apache Ranger整合Hadoop、Hive、源码阅读Spark实现权限管理
HDFSçº å ç
å¯æ¬æ¯æè´µç--å¨HDFSä¸é»è®¤ç3å¯æ¬æºå¶æ%çåå¨ç©ºé´åå ¶å®çèµæºï¼æ¯å¦ï¼ç½ç»å¸¦å®½ï¼å¼éãç¶èï¼ç¸å¯¹äºä½ I/O æ´»å¨çææ°æ®éåå·æ°æ®éï¼å¨æ£å¸¸çæä½æé´å¯¹å ¶é¢å¤çå¯æ¬å¾å°è®¿é®ï¼ä½æ¯ä»ç¶æ¶èä¸ç¬¬ä¸å¯æ¬ç¸åæ°éçèµæºã
å æ¤ï¼ä¸ä¸ªèªç¶çæ¹è¿æ¯ä½¿ç¨çº å ç ï¼Erasure Codingï¼æ¿ä»£å¯æ¬æºå¶ï¼å®ä½¿ç¨æ´å°çåå¨ç©ºé´æä¾ç¸åç容é级å«ï¼ä¸ä¸ªå ¸åççº å ç 设置ï¼ä¼ä½¿å¾åå¨ç©ºé´çå¼éä¸è¶ è¿%;ä¸ä¸ªECæ件çå¯æ¬å åæ¯æ æä¹çï¼å®ä¸ç´ä¿æ为1ï¼å¹¶ä¸ä¸è½éè¿å½ä»¤ -setrepä¿®æ¹ECçå¯æ¬å åçå¼ã
ç£çéµåï¼RAIDï¼æ¯å¨åå¨ç³»ç»ä¸ï¼ä½¿ç¨ECæåºåçãRAID使ç¨æ¡ 带çæ¹å¼å®ç°çECï¼å®æä¾é»è¾ä¸åºåçæ°æ®ï¼æ¯å¦æ件ï¼å°æ´å°çåå ï¼æ¯å¦æ¯ç¹ãåèãæåï¼ï¼å¹¶åå¨è¿ç»çåå å°ä¸åçç£çä¸ãå¨æ¬æåçå ¶ä½é¨åï¼è¿ç§æ¡å¸¦åå¸åå 被称为æ¡å¸¦åå ï¼æè åå ï¼ï¼å¯¹äºæ¯ä¸ä¸ªæ¡å¸¦åå§æ°æ®åå ï¼è®¡ç®å¹¶åå¨ä¸å®æ°éçå¥å¶æ ¡éªåå ï¼è¿ä¸ªè¿ç¨å«åç¼ç ãéè¿å¯¹å©ä½çæ°æ®åå¥å¶æ ¡éªåå 解ç 计ç®ï¼å¯ä»¥æ¢å¤ä»»ææ¡å¸¦åå çé误ã
å°ECåHDFSéæå¯ä»¥æé«åå¨æçï¼ç¶èåæ ·æä¾ä¼ ç»çåºäºå¯æ¬æºå¶çHDFSæä¹ åé¨ç½²ï¼ä¾å¦ï¼3å¯æ¬çæ件æ6个åï¼å°ä¼æ¶è 6*3 = 个åçç£ç空é´ï¼ä½æ¯ä½¿ç¨ECï¼6个æ°æ®ï¼3ä¸ªæ ¡éªï¼é¨ç½²ï¼ä»å°åªæ¶è9个åçç£ç空é´ã
å¨ECçç¯å¢ä¸ï¼æ¡å¸¦æè¥å¹²ä¸»è¦çä¼ç¹ï¼é¦å ï¼å®è½å¨çº¿ECï¼ä½¿ç¨ECçæ ¼å¼ç´æ¥åæ°æ®ï¼ï¼é¿å 转æ¢é¶æ®µï¼ç´æ¥èçåå¨ç©ºé´ãå¨çº¿ECéè¿å¹¶è¡å©ç¨å¤ç£ç主轴å¢å¼ºI/Oæ§è½ï¼è¿å¨é«æ§è½çç½ç»çé群ä¸å°¤å ¶éè¦ãå ¶æ¬¡ï¼å®èªç¶çååå°æ件å°å¤ä¸ªDataNodesï¼æ¶é¤äºå°å¤ä¸ªæ件ç»å®å°ä¸ä¸ªç¼ç ç»çéè¦ï¼è¿ä¼å¾å¤§çç®åæ件çæä½ï¼æ¯å¦å é¤ãé é¢æ±æ¥åå¨èé¦é群ä¸ä¸åçNamespaceä¹é´è¿ç§»æ°æ®çãå¨å ¸åçHDFSé群ä¸ï¼å°æ件å æ»åå¨ç©ºé´3/4以ä¸çæ¶èï¼ä¸ºäºæ´å¥½çæ¯æå°æ件ï¼å¨ç¬¬ä¸é¶æ®µå·¥ä½ä¸ï¼HDFSæ¯ææ¡å¸¦çECãå¨æªæ¥ï¼HDFSä¹ä¼æ¯æè¿ç»çECå¸å±ï¼æ¥ç设计ææ¡£ï¼æ´å¤çä¿¡æ¯å¨issue HDFS- ä¸è®¨è®ºã
æ¡å¸¦çHDFSæ件æ¯ç±é»è¾ä¸çåç»ææï¼æ¯ä¸ªåç»å å«ä¸å®æ°éçå é¨åï¼ä¸ºäºåå°é¢å¤çå对NameNodeå åæ¶èï¼æåºäºæ°çåå±åå½ååè®®ï¼åç»çIDå¯ä»¥ä»å®çå é¨åçä»»æ ID ä¸æ¨æåºæ¥ï¼è¿å 许åç»çº§å«ç管çï¼èä¸æ¯å级å«çã
客æ·ç«¯è¯»åè·¯å¾è¢«å¢å¼ºï¼å¯ä»¥å¹¶è¡å¤çä¸ä¸ªåç»çå¤ä¸ªå é¨åï¼å¨è¾åº/åå ¥è·¯å¾ï¼ DFSStripedOutputStream ç¨äºç®¡çä¸ç»æ°æ®æµï¼æ¯ä¸ªæ°æ®æµå¯¹åºä¸ä¸ªDataNodeï¼è¯¥DataNodeå¨å½ååç»ä¸åå¨ä¸ä¸ªå é¨åï¼è¿äºæ°æ®æµå¤§å¤æ¯å¼æ¥å·¥ä½ï¼åè°å¨è´è´£æä½æ´ä¸ªåç»ï¼å æ¬ç»æå½åçåç»ãåé æ°çåç»ççãå¨è¾å ¥ / 读路å¾ï¼ DFSStripedInputStream å°è¯·æ±çé»è¾åèèå´çæ°æ®è½¬æ¢ä¸ºåå¨å¨DataNodesä¸çå é¨åçèå´ï¼ç¶å并è¡çåå¸è¯»è¯·æ±ï¼å¨åºç°æ éæ¶ï¼å®ååºé¢å¤ç读请æ±ç¨äºè§£ç ã
DataNodeä¼è¿è¡ä¸ä¸ªé¢å¤ç ErasureCodingWorker (ECWorker) ä»»å¡ç¨äºåå°æ¢å¤å¤±è´¥çECåï¼å½NameNodeæ£æµå°ä¸ä¸ªå¤±è´¥çECåï¼å®ä¼éæ©ä¸ä¸ªDataNodeå»åæ¢å¤çå·¥ä½ï¼æ¢å¤ä»»å¡éè¿å¿è·³ååºä¼ éè³DataNodeï¼è¿ä¸ªè¿ç¨ç±»ä¼¼äºå¯æ¬åéæ°å¤å¶å¤±è´¥çæ°æ®åï¼é建失败çåæ3个主è¦çä»»å¡ï¼
使ç¨ä¸ç¨ç线ç¨æ± 并è¡ç读åè¾å ¥æ°æ®ï¼åºäºECçç¥ï¼å®å°ææç读请æ±è°åº¦å°ææçæºèç¹ï¼å¹¶ä¸åªè¯»åæå°æ°æ®éçè¾å ¥åæ°ç¨äºéæã
ä»è¾å ¥æ°æ®ä¸è§£ç åºæ°çæ°æ®ååå¥å¶æ ¡éªåï¼ææ丢失çæ°æ®ååæ ¡éªåä¸èµ·è§£ç ã
解ç å®æåï¼æ¢å¤çæ°æ®åè¢«ä¼ è¾å°ç®æ DataNodeèç¹ã
为äºä½¿çº å ç çç¥éåå¼æçå·¥ä½æ¹å¼ï¼æ们å 许HDFSé群ä¸çæ件åç®å½å ·æä¸åçå¯æ¬åçº å ç çç¥ï¼çº å ç çç¥å°è£ äºå¦ä½ç¼ç /解ç æ件ï¼æ¯ä¸ä¸ªçç¥ç±ä»¥ä¸ä¿¡æ¯é¨åå®ä¹ï¼
è¿ä¸ªå æ¬å¨ECç»ï¼æ¯å¦ï¼6+3ï¼ä¸æ°æ®ååæ ¡éªåçæ°éï¼ä»¥åç¼è§£ç å¨ç®æ³ï¼æ¯å¦ï¼ Reed-Solomon,源码阅读 XOR ï¼
è¿å³å®äºæ¡å¸¦è¯»åçç²åº¦ï¼å æ¬ç¼å²åºå¤§å°åç¼ç å·¥ä½ã
çç¥è¢«å½å为æ°æ®åæ°é-æ ¡éªåæ°é-ååå ç大å°ï¼å½åæ¯æ6ç§å ç½®çç¥ï¼RS-3-2-k, RS-6-3-k, RS--4-k, RS-LEGACY-6-3-k, XOR-2-1-k åREPLICATIONã
REPLICATIONæ¯ä¸ç§ç¹æ®ççç¥ï¼å®åªè½è¢«è®¾ç½®å¨ç®å½ä¸ï¼å¼ºå¶ç®å½éç¨3å¯æ¬çç¥ï¼èä¸æ¯ç»§æ¿å®çç¥å ççº å ç çç¥ï¼è¯¥çç¥ä½¿3å¯æ¬ç®å½ä¸çº å ç ç®å½äº¤åæ为å¯è½ã
REPLICATION çç¥æ¯ä¸ç´å¯ç¨çï¼èå ¶å®çå ç½®çç¥å¨é»è®¤çæ åµä¸æ¯ç¦ç¨çã
类似äºHDFSåå¨çç¥ï¼çº å ç çç¥æ¯è®¾ç½®å¨ç®å½ä¸çï¼å½ä¸ä¸ªæ件被å建ï¼å®ç»§æ¿ç¦»å®æè¿çç¥å ç®å½çECçç¥ã
ç®å½çº§å«çECçç¥åªå½±åå¨è¯¥ç®å½ä¸å建çæ°æ件ï¼ä¸æ¦ä¸ä¸ªæ件已ç»è¢«å建ï¼å®ççº å ç çç¥å¯ä»¥è¢«æ¥è¯¢ï¼ä½æ¯ä¸è½æ¹åï¼å¦æä¸ä¸ªçº å ç æ件被éå½åå°ä¸ä¸ªä¸åçECçç¥çç®å½ä¸ï¼è¯¥æ件ä¼ä¿çå®ä¹ååå¨çECçç¥ï¼è½¬æ¢ä¸ä¸ªæ件å°ä¸åçECçç¥éè¦éåå®çæ°æ®ï¼éåæ°æ®æ¯éè¿æ·è´æ件ï¼æ¯å¦ï¼éè¿distcpï¼èä¸æ¯éå½åæ件ã
æ们å 许ç¨æ·éè¿XMLæ件çæ¹å¼å»å®ä¹å®ä»¬èªå·±çECçç¥ï¼è¯¥XMLæä»¶å¿ é¡»è¦æä¸é¢ç3é¨åï¼
1ï¼ layoutversion: 表示ECçç¥æä»¶æ ¼å¼ççæ¬ã
2ï¼ schemas: è¿ä¸ªå æ¬ææç¨æ·å®ä¹çEC约æ
3ï¼ policies: è¿ä¸ªå æ¬ææç¨æ·å®ä¹çECçç¥ï¼æ¯ä¸ªçç¥ç±schema idåæ¡å¸¦åå ç大å°ï¼cellsizeï¼ææï¼
å¨hadoop confç®å½ä¸æä¸ä¸ªåç§°å« user_ec_policies.xml.templateçæ ·æ¬ECçç¥çXMLæ件ã
å ç¹å° ISA-L 代表å ç¹å°æºè½åå¨å éåºï¼ ISA-L æ¯ä¸ºåå¨åºç¨ç¨åºä¼åçåºå±å½æ°å¼æºçéåï¼å®å æ¬å¨ AVX å AVX2 æ令éä¸å¿«éçå Reed-Solomon ç±»åççº å ç ä¼åï¼HDFSçº å ç å¯ä»¥å©ç¨ISA-Lå»å éç¼è§£ç 计ç®ï¼ISA-Læ¯æ大å¤æ°å¼æºçæä½ç³»ç»ï¼å æ¬linuxåwindowsï¼ISA-Lé»è®¤æ¯ä¸å¯å¨çï¼æå ³å¦ä½å¯å¨ISA-Lï¼è¯·çä¸é¢ç说æã
çº å ç å¨é群çCPUåç½ç»æ¹é¢æåºäºé¢å¤çè¦æ±ã
ç¼ç å解ç å·¥ä½ä¼æ¶èHDFS客æ·ç«¯åDataNodesä¸é¢å¤çCPUã
çº å ç æ件ä¹åå¸å¨æºæ¶ä¹é´ï¼ç¨äºæºæ¶å®¹éï¼è¿æå³çå½è¯»åååå ¥æ¡å¸¦æ件ï¼å¤§å¤æ°æä½æ¯å¨æºæ¶å¤çï¼å æ¤ï¼ç½ç»å¯¹å带宽é常éè¦çã
对äºæºæ¶å®¹éæ¥è¯´ï¼è³å°æ¥æä¸é ç½®çECæ¡å¸¦å®½åº¦ç¸åçæºæ¶æ°éä¹æ¯å¾éè¦çï¼å¯¹äºECçç¥RS (6,3)ï¼è¿æå³çè³å°è¦æ9个æºæ¶ï¼çæ³çæ åµä¸è¦ææè 个æºæ¶ç¨äºå¤ç计åå å计åå¤çåæºã对äºæºæ¶æ°éå°äºæ¡å¸¦å®½åº¦çé群ï¼HDFSä¸è½ç»´æ¤æºæ¶å®¹éï¼ä½æ¯ä»ç¶ä¼åæ£æ¡å¸¦æ件å°å¤ä¸ªèç¹ä¸ºäºèç¹çº§å«ç容éã
é»è®¤æ åµä¸ï¼ææå ç½®ççº å ç çç¥æ¯è¢«ç¦ç¨çï¼ä½æ¯å®ä¹å¨åæ°dfs.namenode.ec.system.default.policyä¸çé¤å¤ï¼è¯¥çç¥å¨é»è®¤æ åµä¸æ¯å¯ç¨çãé群管çåå¯ä»¥æ ¹æ®é群ç大å°åå¸æç容éå±æ§ä½¿ç¨å½ä»¤hdfs ec [-enablePolicy -policy <policyName>]å¯ç¨ä¸ç»çç¥ï¼ä¾å¦ï¼å¯¹äºä¸ä¸ªæ¥æ9个æºæ¶çé群ï¼ç±»ä¼¼RS--4-k è¿æ ·ççç¥ä¸è½è¾¾å°æºæ¶çº§å«ç容éï¼èçç¥RS-6-3-k æè RS-3-2-kæ´éåãå¦æ管çååªå ³å¿èç¹çº§å«ç容éï¼å¨è³å°æ个DataNodesçé群ä¸çç¥RS--4-kä¹æ¯éåçã
ç³»ç»é»è®¤çECçç¥å¯ä»¥éè¿åæ°âdfs.namenode.ec.system.default.policyâ æ¥é ç½®ï¼å¨è¿ç§é ç½®ä¸ï¼å½å½ä»¤ â-setPolicyâ没ææå®çç¥å称çåæ°æ¶ï¼é»è®¤ççç¥å°ä¼è¢«ä½¿ç¨ã
é»è®¤æ åµä¸ï¼åæ° âdfs.namenode.ec.system.default.policyâ çå¼ä¸ºâRS-6-3-kâï¼ä½¿ç¨Reed-SolomonåXORå®ç°çç¼è§£ç å¨å¯ä»¥ä½¿ç¨å®¢æ·ç«¯åDataNodeèç¹æå®å¦ä¸çå ³é®åé ç½®ï¼io.erasurecode.codec.rs.rawcodersç¨æ¥æå®é»è®¤çRSç¼è§£ç å¨ï¼io.erasurecode.codec.rs-legacy.rawcodersç¨äºæå®legacy RSç¼è§£ç å¨ï¼io.erasurecode.codec.xor.rawcodersç¨äºæå®XORç¼è§£ç å¨ï¼ç¨æ·ä¹å¯ä»¥ä½¿ç¨ç±»ä¼¼å ³é®åio.erasurecode.codec.self-defined-codec.rawcodersæ¥é ç½®èªå®ä¹çç¼è§£ç å¨ãè¿äºå ³é®åçå¼æ¯å¸¦æåéæºå¶çç¼ç å¨å称çå表ãè¿äºç¼è§£ç å¨å·¥å以æå®çé ç½®çå¼æåºç被å è½½ï¼ç´å°ä¸ä¸ªç¼è§£ç å¨è¢«æåçå è½½ï¼é»è®¤çRSåXORç¼è§£ç å¨é ç½®æ´å欢æ¬å°å®ç°ï¼èä¸æ¯çº¯javaå®ç°ï¼RS-LEGACY没ææ¬å°ç¼è§£ç å¨å®ç°ï¼å æ¤é»è®¤çåªè½æ¯çº¯javaçå®ç°ï¼ææè¿äºç¼è§£ç å¨é½æ纯javaçå®ç°ï¼å¯¹äºé»è®¤çRSç¼è§£ç å¨ï¼å®ä¹æä¸ä¸ªæ¬å°å®ç°ï¼å©ç¨è±ç¹å° ISA-Låºæé«ç¼è§£ç å¨æ§è½ï¼å¯¹äºXORç¼è§£ç å¨ï¼ä¹æ¯æå©ç¨è±ç¹å° ISA-Låºæåç¼è§£ç çæ§è½çæ¬å°å®ç°ï¼è¯·åé âEnable Intel ISA-Lâè·åæ´è¯¦ç»çä¿¡æ¯ãé»è®¤çRSLegacyçå®ç°æ¯çº¯javaçï¼é»è®¤çRSåXORæ¯ä½¿ç¨äºå ç¹å°ISA-Låºæ¬å°å®ç°çï¼å¨DataNodesä¸ççº å ç åå°æ¢å¤å·¥ä½ä¹å¯ä»¥ä½¿ç¨ä¸é¢çåæ°è¢«è°ä¼ï¼
1ï¼ dfs.datanode.ec.reconstruction.stripedread.timeout.millis --æ¡å¸¦è¯»åè¶ æ¶æ¶é´ï¼é»è®¤å¼ ms
2ï¼ dfs.datanode.ec.reconstruction.stripedread.buffer.size --读åæå¡çç¼å大å°ï¼é»è®¤å¼ K
3ï¼ dfs.datanode.ec.reconstruction.threads -- DataNodeç¨äºåå°éæå·¥ä½ç线ç¨æ°éï¼é»è®¤å¼ 8 个线ç¨
4ï¼ dfs.datanode.ec.reconstruction.xmits.weight -- ä¸å¯æ¬åæ¢å¤ ç¸æ¯ï¼ECåå°æ¢å¤ä»»å¡ä½¿ç¨çxmits çç¸å¯¹æéï¼é»è®¤å¼0.5ï¼è®¾ç½®å®çå¼ä¸º0å»ç¦ç¨è®¡ç®ECæ¢å¤ä»»å¡çæéï¼ä¹å°±æ¯è¯´ï¼ECä»»å¡æ»æ¯1 xmitsãéè¿è®¡ç®åºè¯»æ°æ®æµçæ°éååæ°æ®æµçæ°éçæ大å¼æ¥è®¡ç®åºçº å ç æ¢å¤ä»»å¡çxmitsãä¾å¦ï¼å¦æä¸ä¸ªECæ¢å¤ä»»å¡éè¦ä»6个èç¹è¯»åæ°æ®ï¼å¾2个èç¹åå ¥æ°æ®ï¼å®æ¥æç xmits æ¯max(6, 2) * 0.5 = 3ï¼å¤å¶æ件çæ¢å¤ä»»å¡æ»æ¯è®¡ç®ä¸º1xmitï¼NameNodeå©ç¨dfs.namenode.replication.max-streamsåå»DataNodeä¸æ»çxmitsInProgressï¼å并æ¥èªå¯æ¬æ件åECæ件çxmitsï¼ ï¼ä»¥ä¾¿è°åº¦æ¢å¤ä»»å¡å°è¿ä¸ªDataNodeã
HDFSå©ç¨å ç¹å°ISA-Låºå»æé«é»è®¤çRSæ¬å°å®ç°çç¼è§£ç å¨çç¼è§£ç 计ç®é度ï¼å¼å¯å¹¶ä½¿ç¨è±ç¹å°ISA-Låºï¼éè¦3æ¥ï¼
1ï¼æ建ISA-Låºï¼è¯·åé å®æ¹çç½ç« â /org/isa-l/ â è·å详æ ä¿¡æ¯ã
2ï¼æ建带æISA-Læ¯æçHadoopï¼è¯·åé æºç ä¸BUILDING.txtæ件ä¸ç âBuild instructions for Hadoopâä¸çâIntel ISA-L build optionsâé¨åã
3ï¼ä½¿ç¨-Dbundle.isalæ·è´ isal.lib ç®å½ä¸çå 容å°æç»çtaræ件ä¸ã
使ç¨è¯¥taræ件é¨ç½²Hadoopï¼ç¡®ä¿ISA-Læ¯å¨HDFS客æ·ç«¯åDataNodes端æ¯å¯ç¨çã为äºéªè¯ISA-Lè½å¤è¢«Hadoopæ£ç¡®çæ£æµå°ï¼è¿è¡å½ä»¤ hadoop checknativeæ¥éªè¯ã
HDFSæä¾äºECçåå½ä»¤ç¨äºæ§è¡çº å ç ç¸å ³ç管çå½ä»¤ã
hdfs ec [generic options] [-setPolicy -path <path> [-policy <policyName>] [-replicate]] [-getPolicy -path <path>] [-unsetPolicy -path <path>] [-listPolicies] [-addPolicies -policyFile <file>] [-listCodecs] [-enablePolicy -policy <policyName>] [-disablePolicy -policy <policyName>] [-help [cmd ...]]
ä¸é¢æ¯å ³äºæ¯ä¸ªå½ä»¤ç详æ ï¼
[-setPolicy -path <path> [-policy <policyName>] [-replicate]]
å¨æå®çç®å½çè·¯å¾ä¸è®¾ç½®çº å ç çç¥ã
path:HDFSä¸çç®å½ï¼è¿æ¯ä¸ä¸ªå¼ºå¶çåæ°ï¼è®¾ç½®ä¸ä¸ªçç¥åªå½±åæ°å建çæ件ï¼ä¸å½±åå·²ç»åå¨çæ件ã
policyName:å¨è¿ä¸ªç®å½ä¸çæ件ä¸ä½¿ç¨ççº å ç çç¥ï¼å¦æé ç½®äºåæ°âdfs.namenode.ec.system.default.policyâï¼è¿ä¸ªåæ°å¯ä»¥è¢«çç¥ï¼è¿æ¶è·¯å¾çECçç¥å°ä¼è¢«è®¾ç½®æé ç½®æ件ä¸çé»è®¤å¼ã
-replicateï¼å¨ç®å½ä¸åºç¨æå®çREPLICATIONçç¥ï¼å¼ºå¶ç®å½éç¨3å¯æ¬å¤å¶æ¹æ¡ã
-replicate å-policy <policyName>æ¯å¯éçåæ°ï¼å®ä»¬ä¸è½åæ¶è¢«æå®ã
[-getPolicy -path <path>]
è·åå¨æå®è·¯å¾ä¸ç®å½æè æ件ççº å ç çç¥ç详æ ã
[-unsetPolicy -path <path>]
åæ¶ä¹å使ç¨setPolicy å¨ç®å½ä¸è®¾ç½®ççº å ç çç¥ãå¦æç®å½æ¯ä»ç¥å ä¸ç»§æ¿ççº å ç çç¥ï¼unsetPolicy æ¯ä¸ä¸ªç©ºæä½ï¼å³å¨æ²¡ææ确设置çç¥çç®å½ä¸åæ¶çç¥å°ä¸ä¼è¿åé误ã
[-listPolicies ]
ååºææå¨HDFSä¸æ³¨åççº å ç çç¥ï¼åªæå¯ç¨ççç¥æè½ä½¿ç¨setPolicy å½ä»¤ã
[-addPolicies -policyFile <file>]
æ·»å ä¸ä¸ªçº å ç çç¥çå表ï¼è¯·åé 模æ¿çç¥æ件etc/hadoop/user_ec_policies.xml.templateï¼æ大çæ¡å¸¦åå 大å°è¢«å®ä¹å¨å±æ§ âdfs.namenode.ec.policies.max.cellsizeâ ä¸ï¼é»è®¤å¼æ¯4MBï¼å½åçHDFSä¸æ»å ±å 许ç¨æ·æ·»å 个çç¥ï¼è¢«æ·»å ççç¥IDçèå´æ¯~ï¼å¦æå·²ç»æ个çç¥è¢«æ·»å ï¼åæ·»å çç¥å°ä¼å¤±è´¥ã
[-listCodecs]
è·åç³»ç»ä¸æ¯æççº å ç ç¼è§£ç å¨åcoderå表ãä¸ä¸ªcoderæ¯ä¸ä¸ªç¼è§£ç å¨çå®ç°ï¼ä¸ä¸ªç¼è§£ç å¨å¯ä»¥æä¸åçå®ç°ï¼å æ¤ä¼æä¸åçcoderï¼ç¼è§£ç å¨çcoderséç¨åå¤ç顺åºè¢«ååºã
[-removePolicy -policy <policyName>]
移é¤ä¸ä¸ªçº å ç çç¥ã
[-enablePolicy -policy <policyName>]
å¯ç¨ä¸ä¸ªçº å ç çç¥
[-disablePolicy -policy <policyName>]
ç¦ç¨ä¸ä¸ªçº å ç çç¥ã
ç±äºå¤§éçææ¯ææï¼å¨çº å ç æ件ä¸ä¸æ¯ææäºHDFSçåæä½ï¼æ¯å¦hflush, hsync åappendæä½ã
å¨çº å ç æ件ä¸ä½¿ç¨append()å°ä¼æåºIOExceptionã
å¨DFSStripedOutputStream ä¸æ§è¡hflush() åhsync()æ¯ç©ºæä½ï¼å æ¤ï¼å¨çº å ç æ件ä¸è°ç¨hflush() æè hsync()ä¸è½ä¿è¯æ°æ®è¢«æä¹ åã
客æ·ç«¯å¯ä»¥ä½¿ç¨ StreamCapabilities æä¾çAPIå»æ¥è¯¢ä¸ä¸ªOutputStream æ¯å¦æ¯æhflush() åhsync()ï¼å¦æ客æ·ç«¯æ¸´ææ°æ®éè¿hflush() åhsync()æä¹ åï¼å½åçè¡¥ææªæ½æ¯å¨éçº å ç ç®å½ä¸å建3å¯æ¬æ件ï¼æå使ç¨FSDataOutputStreamBuilder#replicate()æä¾çAPIå¨çº å ç ç®å½ä¸å建3å¯æ¬æ件ã
关于linux学习路线的问题 请教前辈
很多同学接触Linux不多,对Linux平台的源码阅读开发更是一无所知。而现在的源码阅读趋势越来越表明,作为一 个优秀的源码阅读编写源码指标软件开发人员,或计算机IT行业从业人员,源码阅读掌握Linux是源码阅读一种很重要的谋生资源与手段。下来我将会结合自己的源码阅读几年的个人开发经验,及对 Linux,源码阅读更是源码阅读类UNIX系统,及开源软件文化,源码阅读谈谈Linux的源码阅读学习方法与学习中应该注意的一些事。
就如同刚才说的源码阅读,很多同学以前可能连Linux是源码阅读什么都不知道,对UNIX更是一无所知。所以我们从最基础的讲起,对于Linux及UNIX的历史我们不做多谈,直接进入入门的学习。
Linux入门是很简单的,问题是你是否有耐心,是否爱折腾,是否不排斥重装一类的大修。没折腾可以说是学不好Linux的,鸟哥说过,要真正了解Linux的分区机制,对LVM使用相当熟练,没有次以上的Linux装机经验是积累不起来的,所以一定不要怕折腾。
由于大家之前都使用Windows,所以我也尽可能照顾这些“菜鸟”。我的推荐,如果你第一次接触Linux,那么首先在虚拟机中尝试它。虚拟机我推荐Virtual Box,我并不主张使用VM,原因是VM是闭源的,并且是收费的,我不希望推动盗版。当然如果你的Money足够多,可以尝试VM,但我要说的是即使是VM,不一定就一定好。付费的软件不一定好。首先,Virtual Box很小巧,Windows平台下安装包在MB左右,而VM动辄MB,虽然功能强大,但资源消耗也多,何况你的需求Virtual Box完全能够满足。所以,还是自己选。如何使用虚拟机,nz模版源码是你的事,这个我不教你,因为很简单,不会的话Google或Baidu都可以,英文好的可以直接看官方文档。
现在介绍Linux发行版的知识。正如你所见,Linux发行版并非Linux,Linux仅是指操作系统的内核,作为科班出生的你不要让我解释,我也没时间。我推荐的发行版如下:
UBUNTU适合纯菜鸟,追求稳定的官方支持,对系统稳定性要求较弱,喜欢最新应用,相对来说不太喜欢折腾的开发者。
Debian,相对UBUNTU难很多的发行版,突出特点是稳定与容易使用的包管理系统,缺点是企业支持不足,为社区开发驱动。
Arch,追逐时尚的开发者的首选,优点是包更新相当快,无缝升级,一次安装基本可以一直运作下去,没有如UBUNTU那样的版本概念,说的专业点叫滚动升级,保持你的系统一定是最新的。缺点显然易见,不稳定。同时安装配置相对Debian再麻烦点。
Gentoo,相对Arch再难点,考验使用者的综合水平,从系统安装到微调,内核编译都亲历亲为,是高手及黑客显示自己技术手段,按需配置符合自己要求的系统的首选。
Slackware与Gentoo类似。
CentOS,社区维护的RedHat的复刻版本,完全使用RedHat的源码重新编译生成,与RedHat的兼容性在理论上来说是最好的。如果你专注于Linux服务器,如网络管理,架站,那么CentOS是你的选择。
LFS,终极黑客显摆工具,完全从源代码安装,编译系统。安装前你得到的壳网源码只有一份文档,你要做的就是照文档你的说明,一步步,一条条命令,一个个软件包的去构建你的Linux,完全由你自己控制,想要什么就是什么。如果你做出了LFS,证明你的Linux功底已经相当不错,如果你能拿LFS文档活学活用,再将Linux从源代码开始移植到嵌入式系统,我敢说中国的企业你可以混的很好。
你得挑一个适合你的系统,然后在虚拟机安装它,开始使用它。如果你想快速学会Linux,我有一个建议就是忘记图形界面,不要想图形界面能不能提供你问题的答案,而是满世界的去找,去问,如何用命令行解决你的问题。在这个过程中,你最好能将Linux的命令掌握的不错,起码常用的命令得知道,同时建立了自己的知识库,里面是你积累的各项知识。
再下个阶段,你需要学习的是Linux平台的C/C++开发,同时还有Bash脚本编程,如果你对Java兴趣很深还有Java。同样,建议你抛弃掉图形界面的IDE,从VIM开始,为什么是VIM,而不是Emacs,我无意挑起编辑器大战,但我觉得VIM适合初学者,适合手比较笨,脑袋比较慢的开发者。Emacs的键位太多,太复杂,我很畏惧。然后是GCC,Make,Eclipse(Java,C++或者)。虽然将C++列在了Eclipse中,但我并不推荐用IDE开发C++,因为这不是Linux的文化,容易让你忽略一些你应该注意的问题。IDE让你变懒,懒得跟猪一样。如果你对程序调试,测试工作很感兴趣,腾讯源码检测GDB也得学的很好,如果不是GDB也是必修课。这是开发的第一步,注意我并没有提过一句Linux系统API的内容,这个阶段也不要关心这个。你要做的就是积累经验,在Linux平台的开发经验。我推荐的书如下:C语言程序设计,谭浩强的也可以。C语言,白皮书当然更好。C++推荐C++ Primer Plus,Java我不喜欢,就不推荐了。工具方面推荐VIM的官方手册,GCC中文文档,GDB中文文档,GNU开源软件开发指导(电子书),汇编语言程序设计(让你对库,链接,内嵌汇编,编译器优化选项有初步了解,不必深度)。
如果你这个阶段过不了就不必往下做了,这是底线,最基础的基础,否则离开,不要霍霍Linux开发。不专业的Linux开发者作出的程序是与Linux文化或UNIX文化相背的,程序是走不远的,不可能像Bash,VIM这些神品一样。所以做不好干脆离开。
接下来进入Linux系统编程,不二选择,APUE,UNIX环境高级编程,一遍一遍的看,看遍都嫌少,如果你可以在大学将这本书翻烂,里面的内容都实践过,有作品,你口头表达能力够强,你可以在面试时说服所有的考官。(可能有点夸张,但APUE绝对是圣经一般的读物,即使是Windows程序员也从其中汲取养分,Google创始人的案头书籍,扎尔伯克的床头读物。)
这本书看完后你会对Linux系统编程有相当的了解,知道Linux与Windows平台间开发的差异在哪?它们的优缺点在哪?我的总结如下:做Windows平台开发,很苦,微软的游戏源码换装系统API总在扩容,想使用最新潮,最高效的功能,最适合当前流行系统的功能你必须时刻学习。Linux不是,Linux系统的核心API就来个,记忆力好完全可以背下来。而且经久不变,为什么不变,因为要同UNIX兼容,符合POSIX标准。所以Linux平台的开发大多是专注于底层的或服务器编程。这是其优点,当然图形是Linux的软肋,但我站在一个开发者的角度,我无所谓,因为命令行我也可以适应,如果有更好的图形界面我就当作恩赐吧。另外,Windows闭源,系统做了什么你更本不知道,永远被微软牵着鼻子跑,想想如果微软说Win8不支持QQ,那腾讯不得哭死。而Linux完全开源,你不喜欢,可以自己改,只要你技术够。另外,Windows虽然使用的人多,但使用场合单一,专注与桌面。而Linux在各个方面都有发展,尤其在云计算,服务器软件,嵌入式领域,企业级应用上有广大前景,而且兼容性一流,由于支持POSIX可以无缝的运行在UNIX系统之上,不管是苹果的Mac还是IBM的AS系列,都是完全支持的。另外,Linux的开发环境支持也绝对是一流的,不管是C/C++,Java,Bash,Python,PHP,Javascript,。。。。。。就连C#也支持。而微软除Visual Stdio套件以外,都不怎么友好,不是吗?
如果你看完APUE的感触有很多,希望验证你的某些想法或经验,推荐UNIX程序设计艺术,世界顶级黑客将同你分享他的看法。
现在是时候做分流了。 大体上我分为四个方向:网络,图形,嵌入式,设备驱动。
如果选择网络,再细分,我对其他的不是他熟悉,只说服务器软件编写及高性能的并发程序编写吧。相对来说这是网络编程中技术含量最高的,也是底层的。需要很多的经验,看很多的书,做很多的项目。
我的看法是以下面的顺序来看书:
APUE再深读 – 尤其是进程,线程,IPC,套接字
多核程序设计 - Pthread一定得吃透了,你很NB
UNIX网络编程 – 卷一,卷二
TCP/IP网络详解 – 卷一 再看上面两本书时就该看了
5.TCP/IP 网络详解 – 卷二 我觉得看到卷二就差不多了,当然卷三看了更好,努力,争取看了
6.Ligposeup
执行cleos命令
aliascleos='docker-composeexeckeosd/opt/eos/bin/cleos-Hnodeos'
cleosgetinfo
cleosgetaccountinita
多节点参考
问题解决:
如碰到超时问题
在启动nodeos时添加?--max-transaction-time=参数
什么是EOS?如何购买EOS?对于专业摄影师而言,会遇到各种不同的拍摄环境,不同拍摄环境对相机的要求也有所不同。严寒的大地,灼热的沙漠,大雨滂沱的密林等,要求相机能够应对这所有的环境。EOS不仅拥有快速准确自动对焦和反应迅速等优异性能,还有以防尘防水滴功能为代表的可靠性,以及丰富的镜头群和多彩的附件等,不光机身,整个系统都在不断扩充,因此无论在什么时候,EOS都得到了专业摄影师一如既往的支持。
EOS的概念—“快速、易用、高画质”。这一点在进入了数码单反相机时代之后也毫无改变。大型单片CMOS图像感应器、数字影像处理器DIGIC4、高精度自动对焦系统、综合除尘对策—EOSI.C.S.(IntegratedCleaningSystem)等,为了实现这一概念,佳能不断开发最新技术,并将其成果应用在EOS相机中。此外不仅是面向专业人士的高端机型,这些最新技术也毫无保留地投入在入门机型中。
(参考其它同学回答复制的)
柚子是数字货币吗?在哪操作?柚子(EOS)由区块链奇才BM(DanielLarimer)领导开发的类似操作系统的区块链架构平台,旨在实现分布式应用的性能扩展。EOS提供帐户,身份验证,数据库,异步通信以及在数以百计的CPU或群集上的程序调度。该技术的最终形式是一个区块链体系架构,该区块链每秒可以支持数百万个交易,同时普通用户无需支付使用费用。发行日期--,发行价格¥7rmb。
可以说,各大主流数字交易所都可以买卖柚子,杠杆交易等。
请问eos数字货币靠谱吗?是不是骗人的eos这个币就是高收益,高风险。来回波动很大,既然选择了投资,就要有能忍受风险的准备。给你看下eos的走势图。你在自己决定。
Apache Ranger整合Hadoop、Hive、Spark实现权限管理
在先前的文章《说说PB级生产上重要的Spark 3.x性能优化方向》中,提到了业务人员在处理数据时可能因误操作而造成数据损坏的问题。在许多场景中,数仓需要直接开放给业务分析人员使用,他们经常执行SQL进行场景分析和验证。为此,可以提供一个WebUI供他们使用,如Hue。然而,由于数仓数据庞大,不可能全部开放给业务人员,因此对外供数时必须提供权限控制。
权限控制方面,CDH上提供的Sentry是一个不错的选择,它基于RBAC进行授权,可以针对库、表等设置不同用户权限。CM的加入使得Sentry的配置变得简单,但Sentry在用户管理方面较为繁琐,且项目已进入Apache Attic,因此选择Sentry并非明智之举。
实际上,许多公司的生产环境都是外网隔离的,特别是涉及敏感数据的小猴公司。开发、运维人员进入生产环境需要经过严格的校验,接入公司的生产专用网络,并通过堡垒机,任何人都无法导出数据,且每个操作都有审计跟踪。尽管如此,业务人员仍需开放访问,尽管他们通过专门的跳板机访问,但依然存在风险。
Apache Ranger只要有大数据集群的地方就都需要。本文解决了Ranger不支持Spark SQL的问题,实现了库、表、行、列级别的细粒度权限控制。由于官方文档和百度文档有限,本文将分享相关信息,希望能帮助到大家。
Apache Ranger是一个用于Hadoop平台上的权限框架,旨在服务于整个大数据生态圈。随着Hadoop在数据湖领域方案的成熟,对数据权限控制的要求也日益提高。Ranger现在提供了更多对大数据生态组件的支持。
Hadoop中的数据访问多样化,如存储在HDFS的数据可以被Hive、Spark或Presto访问。这么多组件访问数据,若不进行集中权限控制,数据安全性将面临严重问题。因此,大数据平台通常需要一个集中管理权限的组件或框架,Ranger正是这样的组件。
当前Ranger版本为2.1,官方提供的版本为2.1。编译测试基于Ranger 2.1版本。官方未提供安装包,需要手动下载Ranger源码包进行编译。编译环境要求提前安装,具体可参考官方网站。
编译成功后,将tar.gz包拷贝到本地。部署Ranger Admin的安装方式与Ranger类似:安装Ranger admin、创建ranger用户并设置密码、上传解压安装包、拷贝MySQL JDBC库、在MySQL中创建ranger库和用户、初始化配置、初始化Ranger admin。若显示成功,则表示初始化成功。在MySQL中可以看到ranger数据库中已创建大量表。
配置Ranger设置数据库密码、配置环境变量、启动Ranger admin访问web UI。登录后,主界面显示如下。点击右上角的“Swith to latest UI”可以切换到最新的UI展示。若安装过程中出现问题,请检查日志。
安装Ranger usersync配置admin认证模式。Ranger中admin的认证方式有三种:Unix、Active Directory、Kerberos。此处使用Unix方式进行认证,意味着后续Ranger admin登录会按照Linux中的认证同步。上传解压Ranger usersync组件、修改初始化配置、初始化配置、配置Linux系统用户组同步配置环境变量、启动usersync服务、修改Ranger admin的认证方式、重新启动Ranger admin。在ranger-admin中可以看到所有Linux中的所有用户。
安装Ranger HDFS插件。注意,HDFS插件需要安装在NameNode对应的节点中,YARN插件需要安装在ResourceManager对应的节点上。解压HDFS插件、初始化配置、启用hdfs插件。Ranger HDFS插件会将当前的配置文件保存备份。可以查看ranger对这些配置文件的更改。
在PM中添加HDFS服务、配置HDFS服务权限策略、默认策略、策略配置、测试用户访问权限、在ranger中添加组合用户、基于角色授权、测试。我们发现,只要Ranger中的权限已更新,hdfs客户端就可以实现更新。
按照之前的配置,审计日志信息保存在指定目录。找到一条审计日志,查看其中的内容。审计日志中包含操作时间、路径、资源类型、对应Ranger中的策略等信息。一旦出现安全类问题,通过审计日志可以检查到进行了哪些操作。
部署Ranger HDFS HA。在HDFS的HA集群上,NameNode可能会发生failover,因此非常有必要在每个HDFS的NameNode上部署一个HDFS插件,以确保在HA切换时能够正常控制权限。部署hdfs plugin到每个NameNode节点、初始化NameNode、测试NameNode节点权限。测试lisi用户在/tmp目录的写入权限,发现当前lisi没有写入权限。在Ranger中启用sales角色的用户具备/tmp目录可写权限。重新执行写入操作,NameNode接入Ranger权限控制成功。
部署Ranger框架整合Hive、上传解压Hive插件、初始化配置、启动Hive插件。Ranger会对Hive的配置文件进行处理,生成hiveserver2-site.xml、ranger-hive-audit.xml、ranger-hive-security.xml等文件。重新启动Hive、beeline登录到hive、在PM中添加Hive服务、添加Hive Service、查看权限策略、查看默认hive导入的权限、使用hive查看数据、给hadoop组用户授权、检查spark用户操作权限、授权hadoop组、对某个库、表、列设置细粒度权限、测试数据打码处理、测试Ranger Admin crash对Hive的影响、部署Ranger Spark SQL、编译Apache submarine spark-security模块、配置、配置Spark SQL、测试Thrift Server、测试Spark SQL SHELL、到此Ranger整合Spark SQL完成、查看spark sql审计日志、报错信息处理、找不到AllocationFileLoaderService$Listener、异常信息、解决办法、参考文献。