《Hadoop MapReduce实战手册》一1.5 安装HDFS

    xiaoxiao2023-12-15  163

    本节书摘来异步社区《Hadoop MapReduce实战手册》一书中的第1章,第1.5节,作者: 【美】Srinath Perera , Thilina Gunarathne 译者: 杨卓荦 责编: 杨海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。

    1.5 安装HDFS

    Hadoop MapReduce实战手册HDFS是Hadoop的分布式文件系统。MapReduce任务使用HDFS读取和写入数据。HDFS部署包括一个NameNode和多个DataNode,如图1-3所示。

    要想安装HDFS,需要先配置NameNode和DataNode,然后在slave文件中指定DataNode列表。当我们启动NameNode时,启动脚本将自动启动这些DataNode列表。

    准备工作无论使用的是单台机器还是多台机器,本节都适用。如果你用的是多台机器,则应该选择一台机器作为主节点来运行HDFS NameNode。如果你使用的是单台机器,则可以用它既作NameNode,又作DataNode。

    在用于安装HDFS集群的所有机器上安装Java。如果你使用的是Windows机器,则需要在每一台机器上都安装Cygwin和SSH服务。链接http://pigtail.net/LRP/printsrv/cygwin-sshd.html`提供了详细安装说明。

    操作步骤现在让我们在分布式模式下安装HDFS。

    从主节点到从节点依次启用SSH服务。通过运行以下命令之一检查确认,可以跳过输入密码直接使用SSH服务登录到本地机器或其他所有节点机器: >sshlocalhost >sshIPaddress 如果上述命令返回错误或要求输入密码,那么可以执行下列命令来创建SSH密钥: >ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

    将~/.ssh/id_dsa.pub文件复制到集群中的所有节点。然后通过运行以下命令(如果authorized_keys文件不存在,则运行以下命令。否则,跳到cat命令),将SSH密钥写入每个节点的~/.ssh/authorized_keys文件:

    >touch ~/.ssh/authorized_keys&&chmod 600 ~/.ssh/authorized_keys

    现在配置权限设置,将你的密钥写入~/.ssh/authorized_keys文件。

    >cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

    然后你就可以使用下面的命令登录了:

    >sshlocalhost

    这个命令在主目录的.ssh/目录创建一个SSH密钥对,并且将生成的带SSH的公钥注册为一个信任密钥。

    在每台机器上创建一个目录,用于存储HDFS数据。我们称那个目录为HADOOP_DATA_DIR。现在,让我们创建两个子目录——HADOOP_DATA_DIR/data和HADOOP_DATA_DIR/name。通过为每个目录运行以下命令,将目录权限更改为755: >chmod 755 <name of dir> 在NameNode上,将目录跳转到解压后的HADOOP_HOME目录。然后将所有从节点的IP地址写入HADOOP_HOME/conf/slaves文件,每行一个独立的IP地址。当我们启动NameNode时,它会使用slaves文件启动DataNode。在所有机器上,编辑HADOOP_HOME/conf/hadoop-env.sh,取消该文件中JAVA_HOME行的注释,将其指向本地的Java安装目录。例如,如果Java安装在/opt/jdk1.6下,那么可以将JAVA_HOME行改为export JAVA_HOME=/opt/jdk1.6。在每个节点的HADOOP_HOME/conf目录下,将下面的配置代码添加到core-site.xml文件和hdfs-site.xml文件中。在添加配置之前,把MASTER_NODE字符串替换为主节点的IP地址,并把HADOOP_DATA_DIR替换为第一步创建的目录。 HADOOP_HOME/conf/core-site.xml <configuration> <property> <name>fs.default.name</name> <!-- URL of MasterNode/NameNode --> <value>hdfs://MASTER_NODE:9000/</value> </property> </configuration> HADOOP_HOME/conf/hdfs-site.xml <configuration> <property> <name>dfs.name.dir</name> <!-- Path to store namespace and transaction logs --> <value>HADOOP_DATA_DIR/name</value> </property> <property> <name>dfs.data.dir</name> <!-- Path to store data blocks in datanode --> <value>HADOOP_DATA_DIR/data</value> </property> </configuration> 从NameNode上,运行以下命令来格式化一个新的文件系统: >bin/hadoopnamenode –format 12/04/09 08:44:50 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ ... 12/04/09 08:44:51 INFO common.Storage: Storage directory /Users/ srinath/playground/hadoop-book/hadoop-temp/dfs/name has been successfully formatted. 12/04/09 08:44:51 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at Srinath-s-MacBook-Pro. local/172.16.91.1 ************************************************************/ 使用下面的命令开始HDFS的安装: >bin/start-dfs.sh

    这个命令将首先启动一个NameNode进程。然后,它会查看HADOOP_HOME/conf/slaves文件,启动DataNode进程。控制台将打印类似下面的消息。

    startingnamenode, logging to /root/hadoop-setup-srinath/ hadoop-1.0.0/libexec/../logs/hadoop-root-namenode-node7.beta.out 209.126.198.72: starting datanode, logging to /root/hadoop-setupsrinath/ hadoop-1.0.0/libexec/../logs/hadoop-root-datanode-node7.beta.out 209.126.198.71: starting datanode, logging to /root/hadoop-setupsrinath/ hadoop-1.0.0/libexec/../logs/hadoop-root-datanode-node6.beta.out 209.126.198.72: starting secondarynamenode, logging to /root/hadoop-setup- srinath/hadoop-1.0.0/libexec/../logs/hadoop-rootsecondarynamenode- node7.beta.out

    Hadoop使用集中式架构来管理元数据。在这种设计中,NameNode持有所有文件的信息,记录文件与数据库的对应关系及数据块的具体位置。NameNode是单点,当它发生故障时,它将停止HDFS集群的所有操作。为了避免这种情况,Hadoop支持secondary NameNode,该进程备份了NameNode中的所有数据。如果NameNode发生故障,secondary NameNode会取代其位置1。

    访问链接http://MASTER_NODE:50070/,看是否能看到HDFS启动页面。在这里,请将MASTER_NODE替换为运行HDFS NameNode的主节点的IP地址。最后,使用下面的命令关闭HDFS集群: >bin/stop-dfs.sh

    工作原理NameNode启动时,将读取HADOOP_HOME/conf/slaves文件,找到需要启动的DataNode列表,启动它们,并设置HDFS集群。在1.7节中,我们将探讨如何使用HDFS来存储和管理文件。

    HDFS安装只是整个Hadoop安装的一部分。1.8节中会介绍如何设置Hadoop的其余部分。

    最新回复(0)