Raspberry Pi Hadoop 集群配置

Raspberry Pi Hadoop Cluster Configuration

我最近一直在尝试构建和配置 (8-Pi) Raspberry Pi 3 Hadoop 集群(作为夏季的个人项目)。请耐心等待(不幸的是我对 Hadoop 有点陌生)。我使用的是 Hadoop 版本 2.9.2。我认为重要的是要注意,现在我正在尝试让一个 Namenode 和一个 Datanode 彼此完全发挥作用,然后继续前进并在其余七个 Pi 上复制相同的过程。

问题:我的Namenode(别名:master)是唯一的节点,显示为'Live Datanode'在 dfs-health 界面下,并通过使用:

dfsadmin -report

即使 Datanode 显示为 'Active Node'(在群集 Hadoop 的节点中 UI)并且 'master' 未在从属文件中列出。我的目标配置是 Namenode 不应该执行任何 Datanode 操作。此外,我正在尝试以上述命令将我的 Datanode(别名:slave-01)显示为 'Live Datanode'.

的方式配置集群

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

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

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

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

更新 1

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

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

ExitCodeException exitCode=1: chmod: changing permissions of '/opt/hadoop_tmp/hdfs/datanode': Operation not permitted.

如果有人能帮我解决这个问题,我将不胜感激!不幸的是,尽管使用 '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

核心-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>

纱-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>

可以 让你的本地路由器提供主机名而不是自己操作 /etc/hosts,但是为了改变每个 Pi 的名字,编辑 /etc/hostname 并重启。

开机前后,检查运行ning hostname -f

注意:一旦你有"YARN master"、"HDFS master"、"Hive Master"等,"master"就真的没有意义了。最好按字面意思说namenodedata{1,2,3}yarn-rm,依此类推

关于权限问题,您可以 运行 以 root 身份执行所有操作,但在家庭实验室之外这样做是不安全的,因此您需要 运行 一些 adduser 命令至少 hduser(如其他地方所述,但可以是其他任何内容)和 yarn,然后 运行 作为这些用户执行命令,在 chown -R 之后是这些用户拥有的数据和日志目录他们所属的用户和 Unix 组