Raspberry Pi Hadoop集群配置

时间:2018-12-04 23:16:53

标签: hadoop raspberry-pi hadoop2 raspberry-pi2

我最近一直在尝试构建和配置(8-Pi)Raspberry Pi 3 Hadoop群集(作为夏季的个人项目)。请多多包涵(不幸的是,我是Hadoop的新手)。我正在使用的是 Hadoop版本2.9.2 。我认为重要的是要注意,现在我试图让一个Namenode和一个Datanode彼此完全正常运行,然后继续进行,并在其余七个Pi上复制相同的过程。

问题:“我的名称”节点(别名:主节点)是“仅唯一”节点,在这两个节点下均显示为“实时 Datanode ” dfs-health界面,并通过使用:

  

dfsadmin-报告

即使Datanode被显示为“活动节点”(在集群Hadoop UI的节点内),并且“ master”也未在slaves文件中列出。我想要的配置是Namenode不应执行任何Datanode操作。另外,我正在尝试配置集群,使上面的命令将我的Datanode(别名:slave-01)显示为“实时Datanode”。

我怀疑我的问题是由于我的Namenode和Datanode都使用相同的主机名(raspberrypi)引起的,但是我不确定我需要进行哪些配置更改才能解决此问题。在查阅了文档之后,不幸的是,我找不到关于是否允许这样做的结论性答案。

如果有人可以帮助我解决此问题,将不胜感激!我在下面提供了任何相关的文件信息(我认为这对于解决问题可能很有用)。谢谢:)

PS:除非另行指定,否则Namenode和Datanode中的所有文件都是相同的。

================================================ ==========================

更新1

我已经从Namenode和Datanode上的slaves文件中删除了localhost,并将它们各自的主机名也更改为'master'和'slave-01'。

运行JPS之后:我注意到所有正确的进程都在主节点上运行,但是在Datanode上却出现了错误,日志显示为该错误:

  

ExitCodeException exitCode = 1:chmod:更改“ / opt / hadoop_tmp / hdfs / datanode”的权限:不允许操作。

如果有人可以帮助我解决此问题,将不胜感激!不幸的是,尽管使用“ chmod 777”更改了权限,问题仍然存在。在此先感谢:)

================================================ ==========================

主机文件

127.0.0.1     localhost
::1           localhost ip6-localhost ip6-loopback
ff02::1       ip6-allnodes
ff02::2       ip6-allrouters

127.0.1.1     raspberrypi
192.168.1.2   master
192.168.1.3   slave-01

主文件

master

从文件

localhost
slave-01

Core-Site.xml

<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://master:9000/</value>
    </property>
    <property>
        <name>fs.default.FS</name>
        <value>hdfs://master:9000/</value>
    </property>
</configuration>

HDFS-Site.xml

<configuration>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/opt/hadoop_tmp/hdfs/datanode</value>
        <final>true</final>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/opt/hadoop_tmp/hdfs/namenode</value>
        <final>true</final>
    </property>
    <property>
        <name>dfs.namenode.http-address</name>
        <value>master:50070</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

Mapred-Site.xml

<configuration>
    <property>
        <name>mapreduce.job.tracker</name>
        <value>master:5431</value>
    </property>
    <property>
        <name>mapred.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

Yarn-Site.xml

<configuration>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:8025</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8035</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>master:8050</value>
    </property>
</configuration>

1 个答案:

答案 0 :(得分:1)

可以让本地路由器自己提供主机名,而不用自己操纵/etc/hosts,但是要更改每个Pi的名称,请编辑/etc/hostname并重新启动。

启动之前和之后,请检查运行hostname -f

注意:一旦拥有“ YARN主机”,“ HDFS主机”,“ Hive主机”等,“主机”实际上就毫无意义。最好用字面意思说namenodedata{1,2,3},{{ 1}},依此类推

关于权限问题,您可以以root用户身份运行所有内容,但这在homelab之外是不安全的,因此,您至少要为yarn-rm运行一些adduser命令(如其他地方所述,但是可以是其他任何名称),然后hduser,然后以这些用户身份运行命令,在yarn属于这些用户及其所属的Unix组拥有的数据和日志目录之后,