我有一些关于hadoop的问题,我们计划在生产环境中实现hadoop
我们有一个大的机器集群,每台机器都是一台服务器机器,有大内存和8个核心。每台40台机器每5分钟收集大约60 gb的数据。这些机器还分布在世界各地的多个地点。在hadoop环境中,有一个单独的服务器机器充当namenode。剩下的40台机器都是数据采集器,我把它们作为hadoop集群的数据节点。
因为每台机器上的数据收集量都很高,所以我不希望我的数据跨服务器、跨地域传输。这是我的两个要求
1) 我想要的是我的60 gb的数据被分割成块,但应该在本地处理。为此,我希望在同一台服务器上有多个datanodes deomons。有可能在同一台服务器上运行多个datanodes deomon吗?
2) 是否可以处理指定数据节点上的块。
我将举一个例子来阐明我的观点,比如说我有a、b、c、d。。。。。。。。。。。。
一台机器每5分钟将有60 gb的数据。我可以在一台机器上运行多个datanodes守护程序吗?如果可能的话,我可以告诉我的namemode只将块发送到服务器a上运行的datanodes守护进程,而不发送到其他机器。
我不想要数据的高可用性,也不需要故障保护,所以不需要复制数据。
2条答案
按热度按时间uqdfh47h1#
数据节点和名称节点只是软件的一部分,可以在任何商品机器上运行。因此,这是可能的,但很少在现实世界中使用。如果您推测服务器中的数据不可用会带来风险,那么您可能会想到将数据节点分布在不同的服务器上。
除此之外,apache官方网站还提到:
该体系结构并不排除在同一台机器上运行多个datanode,但在实际部署中很少出现这种情况。
资料来源:https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html#namenode+和+数据节点
l5tcr1uw2#
要在单个节点上启动多个数据节点,请首先下载/构建hadoop二进制文件。
1) 从hadoop源代码下载hadoop二进制文件或构建hadoop二进制文件。
2) 准备hadoop配置以在单个节点上运行(将hadoop默认tmp dir位置从/tmp更改为其他可靠位置)
3) 将以下脚本添加到$hadoop\u home/bin目录,并将其chmod到744。
4) 格式hdfs–bin/hadoop namenode-格式(对于hadoop 0.20及以下版本),bin/hdfs namenode-格式(对于版本>0.21)
5) 启动hdfs bin/start-dfs.sh(这将启动namenode和1个数据节点),可以在上查看http://localhost:50070
6) 使用bin/run-additionaldn.sh启动其他数据节点详细信息
运行-附加DN.sh
我希望这对你有帮助