Apache Hadoop HDFS数据节点Apache Mesos框架
介紹
該項目允許在Mesos上運行HDFS。 您應該熟悉HDFS和Mesos基礎知識:
- http://mesos.apache.org/documentation/latest/
- https://hadoop.apache.org/docs/r2.7.2/hdfs_design.html
項目要求:
- Mesos 0.23.0+
- JDK 1.7.x
- Hadoop 1.2.x或2.7.x
流浪漢
項目包括無所事事的環境 ,允許在本地運行Mesos集群。 如果您要使用外部Mesos群集,則可以跳過本節。
1.啟動流浪節點:
# cd hdfs-mesos/vagrant # vagrant up它創建mesos主節點和從節點。
2.將流浪者節點名稱添加到/etc/hosts
現在,流浪漢中的Mesos應該正在運行。 您可以繼續啟動調度程序。 有關流浪者環境的更多詳細信息,請閱讀vagrant / README.md
運行調度程序
1.下載hdfs-mesos\*.jar或克隆并構建項目:
下載jar:
# mkdir hdfs-mesos # cd hdfs-mesos # wget https://github.com/elodina/hdfs-mesos/releases/download/0.0.1.0/hdfs-mesos-0.0.1.0.jar或克隆并構建:
# git clone https://github.com/elodina/hdfs-mesos.git # cd hdfs-mesos # ./gradlew jar2.下載hadoop tarball:
# wget https://archive.apache.org/dist/hadoop/core/hadoop-2.7.2/hadoop-2.7.2.tar.gz3.啟動調度程序:
# ./hdfs-mesos.sh scheduler --api=http://$scheduler:7000 --master=zk://$master:2181/mesos --user=vagrant 2016-03-18 15:04:48,785 [main] INFO hdfs.Scheduler - Starting Scheduler: api: http://$scheduler:7000 files: jar:./hdfs-mesos-0.0.1.0.jar, hadoop:./hadoop-1.2.1.tar.gz mesos: master:master:5050, user:vagrant, principal:<none>, secret:<none> framework: name:hdfs, role:*, timeout:30d 2016-03-18 15:04:48,916 [main] INFO hdfs.HttpServer - started on port 7000 I0318 15:04:49.008314 19123 sched.cpp:164] Version: 0.25.0 I0318 15:04:49.017160 19155 sched.cpp:262] New master detected at master@192.168.3.5:5050 I0318 15:04:49.019287 19155 sched.cpp:272] No credentials provided. Attempting to register without authentication I0318 15:04:49.029218 19155 sched.cpp:641] Framework registered with 20160310-141004-84125888-5050-10895-0006 2016-03-18 15:04:49,044 [Thread-17] INFO hdfs.Scheduler - [registered] framework:#-0006 master:#326bb pid:master@192.168.3.5:5050 hostname:master 2016-03-18 15:04:49,078 [Thread-18] INFO hdfs.Scheduler - [resourceOffers] slave0#-O761 cpus:1.00; mem:2500.00; disk:35164.00; ports:[5000..32000] master#-O762 cpus:1.00; mem:2500.00; disk:35164.00; ports:[5000..32000] ... 2016-03-18 15:04:49,078 [Thread-18] INFO hdfs.Scheduler - [resourceOffers]哪里:
- $scheduler是可從節點訪問的$scheduler程序地址;
- $master可從調度程序節點訪問的主地址;
調度程序應自行注冊并開始接收資源報價。 如果調度程序未收到報價,則可能需要指定LIBPROCESS_IP:
# export LIBPROCESS_IP=$scheduler_ip現在調度程序應該正在運行,您可以繼續啟動HDFS節點。
運行HDFS群集
Project提供了CLI和REST API,用于管理HDFS節點。 我們將首先關注CLI。
1.添加名稱節點和數據節點:
# ./hdfs-mesos.sh node add nn --type=namenode node added:id: nntype: namenodestate: idleresources: cpus:0.5, mem:512# ./hdfs-mesos.sh node add dn0 --type=datanode node added:id: dn0type: datanodestate: idleresources: cpus:0.5, mem:5122.啟動節點:
# ./hdfs-mesos.sh node start \* nodes started:id: nntype: namenodestate: runningresources: cpus:0.5, mem:512reservation: cpus:0.5, mem:512, ports:http=5000,ipc=5001runtime:task: 383aaab9-982b-400e-aa35-463e66cdcb3bexecutor: 19065e07-a006-49a4-8f2b-636d8b1f2ad6slave: 241be3a2-39bc-417c-a967-82b4018a0762-S0 (master)id: dn0type: datanodestate: runningresources: cpus:0.5, mem:512reservation: cpus:0.5, mem:512, ports:http=5002,ipc=5003,data=5004runtime:task: 37f3bcbb-10a5-4323-96d2-aef8846aa281executor: 088463c9-5f2e-4d1d-8195-56427168b86fslave: 241be3a2-39bc-417c-a967-82b4018a0762-S0 (master)節點已啟動并正在運行。
注意:開始可能需要一些時間。 您可以通過Mesos UI查看進度。
3.執行一些FS操作:
# hadoop fs -mkdir hdfs://master:5001/dir # hadoop fs -ls hdfs://master:5001/ Found 1 items drwxr-xr-x - vagrant supergroup 0 2016-03-17 12:46 /dir注意:在fs url中使用了namenode主機和ipc端口。
使用CLI
Project提供具有以下結構的CLI:
# ./hdfs-mesos.sh help Usage: <cmd> ...Commands:help [cmd [cmd]] - print general or command-specific helpscheduler - start schedulernode - node management為每個命令和子命令提供了幫助:
# ./hdfs-mesos.sh help node Node management commands Usage: node <cmd>Commands:list - list nodesadd - add nodeupdate - update nodestart - start nodestop - stop noderemove - remove nodeRun `help node <cmd>` to see details of specific command# ./hdfs-mesos.sh help node add Add node Usage: node add <ids> [options]Option (* = required) Description --------------------- ----------- --core-site-opts Hadoop core-site.xml options. --cpus <Double> CPU amount (0.5, 1, 2). --executor-jvm-opts Executor JVM options. --hadoop-jvm-opts Hadoop JVM options. --hdfs-site-opts Hadoop hdfs-site.xml options. --mem <Long> Mem amount in Mb. * --type node type (name_node, data_node).Generic Options Option Description ------ ----------- --api REST api url (same as --api option forscheduler).所有與節點相關的命令都支持使用node-id-expressions進行批量操作。 例子:
# ./hdfs-mesos.sh node add dn0..1 --type=datanode nodes added:id: dn0type: datanode...id: dn1type: datanode...# ./hdfs-mesos.sh node update dn* --cpus=1 nodes updated:id: dn0...resources: cpus:1.0, mem:512id: dn1...resources: cpus:1.0, mem:512# ./hdfs-mesos.sh node start dn0,dn1 nodes started:id: dn0...id: dn0...ID表達式示例:
- nn –匹配ID為nn的節點
- * –匹配任何節點(應在外殼中使用斜線轉義)
- dn* –匹配ID以dn開頭的節點
- dn0..2 –匹配節點dn0,dn1,dn2
使用REST
計劃程序使用嵌入式HTTP服務器。 服務器具有兩個功能:
- 分發Hadoop,JRE和執行程序的二進制文件;
- 提供REST API,由CLI調用;
大多數CLI命令都映射到REST API調用。 例子:
| node add nn --type=namenode --cpus=2 | /api/node/add?node=nn&type=namenode&cpus=2 |
| node start dn* --timeout=3m- | /api/node/start?node=dn*&timeout=3m |
| node remove dn5 | /api/node/remove?node=dn5 |
REST調用接受純HTTP參數,并返回JSON響應。 例子:
# curl http://$scheduler:7000/api/node/list [{"id": "nn","type": "namenode",...},{"id": "dn0","type": "datanode",...} ]# curl http://$scheduler:7000/api/node/start?node=nn,dn0 {"status": "started","nodes": [{"id": "nn","state": "running",...},{"id": "dn0","state": "running",...}] }CLI參數將一對一映射到REST參數。 CLI參數使用虛線樣式,而REST參數使用駝峰式。 映射示例:
| <id> (節點添加|更新| ...) | node |
| timeout (節點開始|停止) | timeout |
| core-site-opts (節點添加|更新) | coreSiteOpts |
| executor-jvm-opts (節點添加|更新) | executorJvmOpts |
在某些情況下,REST API調用可能返回錯誤。 錯誤標記為狀態代碼,而不是200。錯誤響應以JSON格式返回。
例:
# curl -v http://192.168.3.1:7000/api/node/start?node=unknown ... HTTP/1.1 400 node not found ... {"error":"node not found","code":400}有關REST API的更多詳細信息,請參閱源。
翻譯自: https://www.javacodegeeks.com/2016/06/apache-hadoop-hdfs-data-node-apache-mesos-framework.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Apache Hadoop HDFS数据节点Apache Mesos框架的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 打印机维修(打印机维修附近)
- 下一篇: gradle 插件 自定义_Gradle