Hadoop教程:多节点集群

栏目: 编程工具 · 发布时间: 6年前

内容简介:本章介绍了Hadoop多节点集群在分布式环境中的设置。由于无法演示整个集群,我们使用三个系统(一个主系统和两个从系统)解释Hadoop集群环境;以下是他们的IP地址。按照下面给出的步骤设置Hadoop多节点集群。

本章介绍了Hadoop多节点集群在分布式环境中的设置。

由于无法演示整个集群,我们使用三个系统(一个主系统和两个从系统)解释Hadoop集群环境;以下是他们的IP地址。

  • Hadoop Master: 192.168.1.15 (hadoop-master)
  • Hadoop Slave: 192.168.1.16 (hadoop-slave-1)
  • Hadoop Slave: 192.168.1.17 (hadoop-slave-2)

按照下面给出的步骤设置Hadoop多节点集群。

安装Java

参考:Hadoop安装与环境设置

映射节点

您必须在 /etc/ 文件夹中编辑所有节点上的 hosts 文件,指定每个系统的IP地址及其主机名。

# vi /etc/hosts
enter the following lines in the /etc/hosts file.
192.168.1.109 hadoop-master 
192.168.1.145 hadoop-slave-1 
192.168.56.1 hadoop-slave-2

配置基于密钥的登录

在每个节点上设置ssh,这样它们就可以彼此通信,而无需提示输入密码。

# su hadoop 
$ ssh-keygen -t rsa 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub tutorialspoint@hadoop-master 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop_tp1@hadoop-slave-1 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop_tp2@hadoop-slave-2 
$ chmod 0600 ~/.ssh/authorized_keys 
$ exit

安装Hadoop

在主服务器中,使用以下命令下载和安装Hadoop。

# mkdir /opt/hadoop 
# cd /opt/hadoop/ 
# wget http://apache.mesi.com.ar/hadoop/common/hadoop-1.2.1/hadoop-1.2.0.tar.gz 
# tar -xzf hadoop-1.2.0.tar.gz 
# mv hadoop-1.2.0 hadoop
# chown -R hadoop /opt/hadoop 
# cd /opt/hadoop/hadoop/

配置Hadoop

您必须配置Hadoop服务器,方法如下所示。

core-site.xml

打开 core-site.xml 文件并编辑它,如下所示。

<configuration>
   <property> 
      <name>fs.default.name</name> 
      <value>hdfs://hadoop-master:9000/</value> 
   </property> 
   <property> 
      <name>dfs.permissions</name> 
      <value>false</value> 
   </property> 
</configuration>

hdfs-site.xml

打开 hdfs-site.xml 文件并编辑它,如下所示。

<configuration>
   <property> 
      <name>dfs.data.dir</name> 
      <value>/opt/hadoop/hadoop/dfs/name/data</value> 
      <final>true</final> 
   </property> 

   <property> 
      <name>dfs.name.dir</name> 
      <value>/opt/hadoop/hadoop/dfs/name</value> 
      <final>true</final> 
   </property> 

   <property> 
      <name>dfs.replication</name> 
      <value>1</value> 
   </property> 
</configuration>

mapred-site.xml

打开 mapred-site.xml 文件并编辑它,如下所示。

<configuration>
   <property> 
      <name>mapred.job.tracker</name> 
      <value>hadoop-master:9001</value> 
   </property> 
</configuration>

hadoop-env.sh

打开 hadoop-env.sh 文件并编辑JAVA_HOME、hadoop op_conf_dir和hadoop op_opts,如下所示。

注意:按照系统配置设置JAVA_HOME。

export JAVA_HOME=/opt/jdk1.7.0_17 export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true export HADOOP_CONF_DIR=/opt/hadoop/hadoop/conf

在从服务器上安装Hadoop

按照给定的命令在所有从服务器上安装Hadoop。

# su hadoop 
$ cd /opt/hadoop 
$ scp -r hadoop hadoop-slave-1:/opt/hadoop 
$ scp -r hadoop hadoop-slave-2:/opt/hadoop

在主服务器上配置Hadoop

打开主服务器并按照给定的命令配置它。

# su hadoop 
$ cd /opt/hadoop/hadoop

配置主节点

$ vi etc/hadoop/masters
hadoop-master

配置从节点

$ vi etc/hadoop/slaves
hadoop-slave-1 
hadoop-slave-2

在Hadoop Master上格式化NameNode

# su hadoop 
$ cd /opt/hadoop/hadoop 
$ bin/hadoop namenode –format
11/10/14 10:58:07 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ 
STARTUP_MSG: Starting NameNode 
STARTUP_MSG: host = hadoop-master/192.168.1.109 
STARTUP_MSG: args = [-format] 
STARTUP_MSG: version = 1.2.0 
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1479473; compiled by 'hortonfo' on Mon May 6 06:59:37 UTC 2013 
STARTUP_MSG: java = 1.7.0_71 ************************************************************/ 11/10/14 10:58:08 INFO util.GSet: Computing capacity for map BlocksMap editlog=/opt/hadoop/hadoop/dfs/name/current/edits
………………………………………………….
………………………………………………….
…………………………………………………. 11/10/14 10:58:08 INFO common.Storage: Storage directory /opt/hadoop/hadoop/dfs/name has been successfully formatted. 11/10/14 10:58:08 INFO namenode.NameNode: 
SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at hadoop-master/192.168.1.15 ************************************************************/

启动Hadoop服务

下面的命令是在Hadoop- master上启动所有Hadoop服务。

$ cd $HADOOP_HOME/sbin
$ start-all.sh

在Hadoop集群中添加一个新的DataNode

下面给出了向Hadoop集群添加新节点的步骤。

配置网络

使用适当的网络配置向现有Hadoop集群添加新节点。假设以下网络配置。

新节点配置:

IP address : 192.168.1.103 
netmask : 255.255.255.0
hostname : slave3.in

添加用户和SSH访问

添加用户

在新节点上,使用以下命令添加“hadoop”用户,并将hadoop用户的密码设置为“hadoop op123”或您想要的任何值。

useradd hadoop
passwd hadoop

设置从主服务器到新从服务器的连接。

在主服务器上执行以下操作

mkdir -p $HOME/.ssh 
chmod 700 $HOME/.ssh 
ssh-keygen -t rsa -P '' -f $HOME/.ssh/id_rsa 
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys 
chmod 644 $HOME/.ssh/authorized_keys
Copy the public key to new slave node in hadoop user $HOME directory
scp $HOME/.ssh/id_rsa.pub hadoop@192.168.1.103:/home/hadoop/

对从服务器执行以下操作

登录到hadoop。

su hadoop ssh -X hadoop@192.168.1.103

将公钥内容复制到文件 “$HOME/.ssh/authorized_keys” 中。然后通过执行以下命令更改相同的权限。

cd $HOME
mkdir -p $HOME/.ssh 
chmod 700 $HOME/.ssh
cat id_rsa.pub >>$HOME/.ssh/authorized_keys 
chmod 644 $HOME/.ssh/authorized_keys

检查主机上的ssh登录。现在检查是否可以在不需要主节点密码的情况下ssh到新节点。

ssh hadoop@192.168.1.103 or hadoop@slave3

设置新节点的主机名

您可以在文件 /etc/sysconfig/network 中设置主机名

On new slave3 machine
NETWORKING=yes 
HOSTNAME=slave3.in

要使更改生效,可以重新启动机器,也可以使用相应的主机名将主机名命令运行到新机器上(重新启动是一个不错的选择)。

slave3节点机器上:

主机名slave3.in

使用以下行更新集群所有机器上的/etc/hosts:

192.168.1.102 slave3.in slave3

现在尝试用主机名ping计算机,检查它是否解析到IP。

在新节点机器上:

ping master.in

在新节点上启动DataNode

使用 $HADOOP_HOME/bin/hadoop-daemon.sh 手动启动datanode守护进程。它将自动联系主节点(NameNode)并加入集群。我们还应该将新节点添加到主服务器中的conf/slave文件中。基于脚本的命令将识别新节点。

登录到新节点

su hadoop or ssh -X hadoop@192.168.1.103

使用以下命令在新添加的从节点上启动HDFS

./bin/hadoop-daemon.sh start datanode

使用jps命令检查新节点

$ jps
7141 DataNode
10312 Jps

从Hadoop集群中删除DataNode

我们可以在节点运行时动态地从集群中删除节点,而不会丢失任何数据。HDFS提供了一个退役特性,可以确保安全地删除节点。使用方法如下:

Step 1: 登录到主服务器

登录到安装Hadoop的主机用户。

$ su hadoop

Step 2: 改变集群配置

在启动集群之前,必须配置一个排除文件。添加一个名为dfs.hosts的键。排除到我们的 $HADOOP_HOME/etc/hadoop/hdfs-site.xml 文件。与此键关联的值提供了NameNode本地文件系统上文件的完整路径,该文件系统包含不允许连接到HDFS的机器列表。

例如,将这些行添加到 etc/hadoop/hdfs-site.xml 文件。

<property> 
   <name>dfs.hosts.exclude</name> 
   <value>/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt</value> 
   <description>DFS exclude</description> 
</property>

Step 3: 确定要删除的主机

要删除的每台机器都应该添加到 hdfs_exclude.txt 文件中,每行一个域名。这将阻止它们连接到NameNode。如果您想删除DataNode2,则 “/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt” 的内容文件如下所示。

slave2.in

Step 4: 强制重加载配置

运行 “$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes” 命令,不带引号。

$ $HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes

这将强制NameNode重新读取其配置,包括最新更新的“exclude”文件。它将在一段时间内对节点进行退役,允许将每个节点的块复制到计划保持活动的机器上。

slave2.in ,检查jps命令输出。一段时间后,您将看到DataNode进程自动关闭。

Step 5: 关闭节点

删除过程完成后,删除的硬件可以安全停机进行维护。向dfsadmin运行report命令检查状态。下面的命令将描述删除节点和连接到集群的节点的状态。

$ $HADOOP_HOME/bin/hadoop dfsadmin -report

Step 6: 再次排除文件

机器一旦退役,就可以从“exclude”文件中删除它们。再次运行 “$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes” 会将排斥文件读入NameNode;允许数据节点在维护完成后重新加入集群,或者在集群中再次需要额外的容量,等等。

特别提示:如果遵循上述流程,且tasktracker流程仍在节点上运行,则需要关闭该流程。一种方法是断开机器,就像我们在上述步骤中所做的那样。主进程将自动识别进程,并将声明为已死。删除任务跟踪器不需要遵循相同的过程,因为与DataNode相比,任务跟踪器并不重要。DataNode包含您希望安全地删除的数据,而不会丢失任何数据。

任务跟踪器可以在任何时间点通过以下命令动态运行/关闭。

$ $HADOOP_HOME/bin/hadoop-daemon.sh stop tasktracker $HADOOP_HOME/bin/hadoop-daemon.sh start tasktracker

原文链接: https://www.tutorialspoint.com/…


以上所述就是小编给大家介绍的《Hadoop教程:多节点集群》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Bad Blood

Bad Blood

John Carreyrou / Knopf / 2018-5-21 / USD 27.95

The full inside story of the breathtaking rise and shocking collapse of Theranos, the multibillion-dollar biotech startup, by the prize-winning journalist who first broke the story and pursued it to t......一起来看看 《Bad Blood》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具