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

简介:

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

1.5 安装HDFS

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


3

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

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

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

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

  1. 从主节点到从节点依次启用SSH服务。通过运行以下命令之一检查确认,可以跳过输入密码直接使用SSH服务登录到本地机器或其他所有节点机器:
>sshlocalhost
>sshIPaddress
  1. 如果上述命令返回错误或要求输入密码,那么可以执行下列命令来创建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的公钥注册为一个信任密钥。

  1. 在每台机器上创建一个目录,用于存储HDFS数据。我们称那个目录为HADOOP_DATA_DIR。现在,让我们创建两个子目录——HADOOP_DATA_DIR/data和HADOOP_DATA_DIR/name。通过为每个目录运行以下命令,将目录权限更改为755:
>chmod 755 <name of dir>
  1. 在NameNode上,将目录跳转到解压后的HADOOP_HOME目录。然后将所有从节点的IP地址写入HADOOP_HOME/conf/slaves文件,每行一个独立的IP地址。当我们启动NameNode时,它会使用slaves文件启动DataNode。
  2. 在所有机器上,编辑HADOOP_HOME/conf/hadoop-env.sh,取消该文件中JAVA_HOME行的注释,将其指向本地的Java安装目录。例如,如果Java安装在/opt/jdk1.6下,那么可以将JAVA_HOME行改为export JAVA_HOME=/opt/jdk1.6。
  3. 在每个节点的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>
  1. 从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
************************************************************/
  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。

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

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

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

相关文章
|
6天前
|
分布式计算 Hadoop 测试技术
Hadoop【基础知识 05】【HDFS的JavaAPI】(集成及测试)
【4月更文挑战第5天】Hadoop【基础知识 05】【HDFS的JavaAPI】(集成及测试)
28 8
|
6天前
|
分布式计算 资源调度 Hadoop
Hadoop【基础知识 03+04】【Hadoop集群资源管理器yarn】(图片来源于网络)(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
【4月更文挑战第5天】Hadoop【基础知识 03】【Hadoop集群资源管理器yarn】(图片来源于网络)Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
31 9
|
7天前
|
分布式计算 Hadoop Shell
Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
【4月更文挑战第4天】Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
18 5
|
10天前
|
存储 分布式计算 Hadoop
【Hadoop】HDFS 读写流程
【4月更文挑战第9天】【Hadoop】HDFS 读写流程
|
11天前
|
分布式计算 Hadoop Java
centos 部署Hadoop-3.0-高性能集群(一)安装
centos 部署Hadoop-3.0-高性能集群(一)安装
13 0
|
3月前
|
存储 分布式计算 监控
Hadoop的JobTracker和TaskTracker在MapReduce中的作用是什么?
Hadoop的JobTracker和TaskTracker在MapReduce中的作用是什么?
49 0
|
3月前
|
存储 分布式计算 Hadoop
Hadoop的Secondary NameNode在HDFS中的作用是什么?
Hadoop的Secondary NameNode在HDFS中的作用是什么?
38 0
|
分布式计算 应用服务中间件 Docker
Hadoop HDFS分布式文件系统Docker版
一、Hadoop文件系统HDFS 构建单节点的伪分布式HDFS 构建4个节点的HDFS分布式系统 nameNode secondnameNode datanode1 datanode2 其中 datanode2动态节点,在HDFS系统运行时,==动态加入==。
2448 0
|
8天前
|
存储 分布式计算 Hadoop
大数据处理架构Hadoop
【4月更文挑战第10天】Hadoop是开源的分布式计算框架,核心包括MapReduce和HDFS,用于海量数据的存储和计算。具备高可靠性、高扩展性、高效率和低成本优势,但存在低延迟访问、小文件存储和多用户写入等问题。运行模式有单机、伪分布式和分布式。NameNode管理文件系统,DataNode存储数据并处理请求。Hadoop为大数据处理提供高效可靠的解决方案。
30 2
|
8天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。

热门文章

最新文章