Apache Hadoop HDFS数据节点Apache Mesos框架
介紹
該項(xiàng)目允許在Mesos上運(yùn)行HDFS。 您應(yīng)該熟悉HDFS和Mesos基礎(chǔ)知識(shí):
- http://mesos.apache.org/documentation/latest/
- https://hadoop.apache.org/docs/r2.7.2/hdfs_design.html
項(xiàng)目要求:
- Mesos 0.23.0+
- JDK 1.7.x
- Hadoop 1.2.x或2.7.x
流浪漢
項(xiàng)目包括無(wú)所事事的環(huán)境 ,允許在本地運(yùn)行Mesos集群。 如果您要使用外部Mesos群集,則可以跳過(guò)本節(jié)。
1.啟動(dòng)流浪節(jié)點(diǎn):
# cd hdfs-mesos/vagrant # vagrant up它創(chuàng)建mesos主節(jié)點(diǎn)和從節(jié)點(diǎn)。
2.將流浪者節(jié)點(diǎn)名稱添加到/etc/hosts
現(xiàn)在,流浪漢中的Mesos應(yīng)該正在運(yùn)行。 您可以繼續(xù)啟動(dòng)調(diào)度程序。 有關(guān)流浪者環(huán)境的更多詳細(xì)信息,請(qǐng)閱讀vagrant / README.md
運(yùn)行調(diào)度程序
1.下載hdfs-mesos\*.jar或克隆并構(gòu)建項(xiàng)目:
下載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或克隆并構(gòu)建:
# 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.啟動(dòng)調(diào)度程序:
# ./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是可從節(jié)點(diǎn)訪問(wèn)的$scheduler程序地址;
- $master可從調(diào)度程序節(jié)點(diǎn)訪問(wèn)的主地址;
調(diào)度程序應(yīng)自行注冊(cè)并開(kāi)始接收資源報(bào)價(jià)。 如果調(diào)度程序未收到報(bào)價(jià),則可能需要指定LIBPROCESS_IP:
# export LIBPROCESS_IP=$scheduler_ip現(xiàn)在調(diào)度程序應(yīng)該正在運(yùn)行,您可以繼續(xù)啟動(dòng)HDFS節(jié)點(diǎn)。
運(yùn)行HDFS群集
Project提供了CLI和REST API,用于管理HDFS節(jié)點(diǎn)。 我們將首先關(guān)注CLI。
1.添加名稱節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn):
# ./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.啟動(dòng)節(jié)點(diǎn):
# ./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)節(jié)點(diǎn)已啟動(dòng)并正在運(yùn)行。
注意:開(kāi)始可能需要一些時(shí)間。 您可以通過(guò)Mesos UI查看進(jìn)度。
3.執(zhí)行一些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主機(jī)和ipc端口。
使用CLI
Project提供具有以下結(jié)構(gòu)的CLI:
# ./hdfs-mesos.sh help Usage: <cmd> ...Commands:help [cmd [cmd]] - print general or command-specific helpscheduler - start schedulernode - node management為每個(gè)命令和子命令提供了幫助:
# ./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).所有與節(jié)點(diǎn)相關(guān)的命令都支持使用node-id-expressions進(jìn)行批量操作。 例子:
# ./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表達(dá)式示例:
- nn –匹配ID為nn的節(jié)點(diǎn)
- * –匹配任何節(jié)點(diǎn)(應(yīng)在外殼中使用斜線轉(zhuǎn)義)
- dn* –匹配ID以dn開(kāi)頭的節(jié)點(diǎn)
- dn0..2 –匹配節(jié)點(diǎn)dn0,dn1,dn2
使用REST
計(jì)劃程序使用嵌入式HTTP服務(wù)器。 服務(wù)器具有兩個(gè)功能:
- 分發(fā)Hadoop,JRE和執(zhí)行程序的二進(jìn)制文件;
- 提供REST API,由CLI調(diào)用;
大多數(shù)CLI命令都映射到REST API調(diào)用。 例子:
| 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調(diào)用接受純HTTP參數(shù),并返回JSON響應(yīng)。 例子:
# 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參數(shù)將一對(duì)一映射到REST參數(shù)。 CLI參數(shù)使用虛線樣式,而REST參數(shù)使用駝峰式。 映射示例:
| <id> (節(jié)點(diǎn)添加|更新| ...) | node |
| timeout (節(jié)點(diǎn)開(kāi)始|停止) | timeout |
| core-site-opts (節(jié)點(diǎn)添加|更新) | coreSiteOpts |
| executor-jvm-opts (節(jié)點(diǎn)添加|更新) | executorJvmOpts |
在某些情況下,REST API調(diào)用可能返回錯(cuò)誤。 錯(cuò)誤標(biāo)記為狀態(tài)代碼,而不是200。錯(cuò)誤響應(yīng)以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}有關(guān)REST API的更多詳細(xì)信息,請(qǐng)參閱源。
翻譯自: https://www.javacodegeeks.com/2016/06/apache-hadoop-hdfs-data-node-apache-mesos-framework.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Apache Hadoop HDFS数据节点Apache Mesos框架的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 打印机维修(打印机维修附近)
- 下一篇: 听歌识曲快捷键(快速听歌识曲)