如何在Ubuntu13.10上安装Hadoop
先决条件
本教程的唯一先决条件是安装了 Ubuntu 13.10 x64 的 VPS。
您将需要从命令行执行命令,您可以通过以下两种方式之一执行此操作:
- 使用 SSH 访问 Droplet。
- 使用 Digital Ocean Droplet 管理面板中的“控制台访问”
什么是 Hadoop?
Hadoop 是一个框架(由软件库组成),它简化了分布在服务器集群中的数据集的处理。 Hadoop 的两个主要组件是 HDFS 和 MapReduce。
HDFS 是 Hadoop 用来存储所有数据的文件系统。 该文件系统跨越 Hadoop 使用的所有节点。 这些节点可以位于单个 VPS 上,也可以分布在大量虚拟服务器上。
MapReduce 是编排所有 Hadoop 活动的框架。 它处理集群中不同节点的工作分配。
使用 Hadoop 的好处
Hadoop 的架构允许您在需要时扩展您的硬件。 可以增量添加新节点,而不必担心数据格式的变化或文件系统上的应用程序的处理。
Hadoop 最重要的特性之一是它允许您通过用廉价的商品服务器代替昂贵的服务器来节省大量资金。 这是可能的,因为 Hadoop 将容错的责任从硬件层转移到了应用层。
安装 Hadoop
安装和运行 Hadoop 非常简单。 但是,由于此过程需要编辑多个配置和设置文件,因此请确保正确执行每个步骤。
1. 安装 Java
Hadoop 需要安装 Java,所以让我们从安装 Java 开始:
apt-get update apt-get install default-jdk
这些命令将更新您的 VPS 上的软件包信息,然后安装 Java。 执行完这些命令后,执行以下命令来验证 Java 是否已经安装:
java -version
如果已安装 Java,则应显示版本详细信息,如下图所示:
2. 创建和设置 SSH 证书
Hadoop 使用 SSH(访问其节点),这通常需要用户输入密码。 但是,可以通过使用以下命令创建和设置 SSH 证书来消除此要求:
ssh-keygen -t rsa -P '' cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
在执行这两个命令中的第一个之后,可能会要求您输入文件名。 只需将其留空并按回车键继续。 第二个命令将新创建的密钥添加到授权密钥列表中,以便 Hadoop 可以在不提示输入密码的情况下使用 SSH。
3. 获取并安装 Hadoop
首先让我们使用以下命令从其中一个镜像中获取 Hadoop:
wget http://www.motorlogy.com/apache/hadoop/common/current/hadoop-2.3.0.tar.gz
笔记: 此命令使用 Hadoop 网站上列出的镜像之一上的下载链接。 镜像列表可以在此链接上找到。 如果愿意,您可以选择任何其他镜子。 要下载最新的稳定版本,请从所选镜像上的 current 或 current2 目录中选择 hadoop-XYZtar.gz 文件。
下载Hadoop包后,执行以下命令解压:
tar xfz hadoop-2.3.0.tar.gz
该命令将把这个包中的所有文件解压到一个名为 hadoop-2.3.0
的目录中。 对于本教程,Hadoop 安装将使用以下命令移动到 /usr/local/hadoop
目录:
mv hadoop-2.3.0 /usr/local/hadoop
笔记: 提取文件夹的名称取决于您下载和提取的 Hadoop 版本。 如果您的版本与本教程中使用的版本不同,请相应地更改上述命令。
4. 编辑和设置配置文件
要完成 Hadoop 的设置,必须修改以下文件:
- ~/.bashrc
- /usr/local/hadoop/etc/hadoop/hadoop-env.sh
- /usr/local/hadoop/etc/hadoop/core-site.xml
- /usr/local/hadoop/etc/hadoop/yarn-site.xml
- /usr/local/hadoop/etc/hadoop/mapred-site.xml.template
- /usr/local/hadoop/etc/hadoop/hdfs-site.xml
一世。 编辑 ~/.bashrc
在编辑 home 目录下的 .bashrc
文件之前,我们需要找到 Java 的安装路径来设置 JAVA_HOME
环境变量。 让我们使用以下命令来做到这一点:
update-alternatives --config java
这将显示如下内容:
该命令显示的完整路径为:
/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
JAVA_HOME
的值是上述路径中 /jre/bin/java
之前的所有内容 - 在本例中为 /usr/lib/jvm/java-7-openjdk-amd64
。 记下这一点,因为我们将在此步骤和另一步骤中使用此值。
现在使用 nano
(或您喜欢的编辑器)使用以下命令编辑 ~/.bashrc:
nano ~/.bashrc
这将在文本编辑器中打开 .bashrc
文件。 转到文件末尾并在其中粘贴/键入以下内容:
#HADOOP VARIABLES START export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 export HADOOP_INSTALL=/usr/local/hadoop export PATH=$PATH:$HADOOP_INSTALL/bin export PATH=$PATH:$HADOOP_INSTALL/sbin export HADOOP_MAPRED_HOME=$HADOOP_INSTALL export HADOOP_COMMON_HOME=$HADOOP_INSTALL export HADOOP_HDFS_HOME=$HADOOP_INSTALL export YARN_HOME=$HADOOP_INSTALL export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib" #HADOOP VARIABLES END
注1: 如果您的 VPS 上 JAVA_HOME
的值不同,请务必对上述内容中的第一个 export
语句进行相应的更改。
笔记2: 使用 nano 打开和编辑的文件可以使用 Ctrl + X
保存。 在提示保存更改时,键入 Y
。 如果系统要求您输入文件名,只需按 Enter 键。
.bashrc
文件的结尾应如下所示:
保存并关闭 .bashrc
文件后,执行以下命令,让您的系统识别新创建的环境变量:
source ~/.bashrc
把上面的内容放到.bashrc
文件中可以保证你的VPS启动时这些变量始终可用。
ii. 编辑 /usr/local/hadoop/etc/hadoop/hadoop-env.sh
使用以下命令使用 nano 打开 /usr/local/hadoop/etc/hadoop/hadoop-env.sh
文件:
nano /usr/local/hadoop/etc/hadoop/hadoop-env.sh
在此文件中,找到导出 JAVA_HOME
变量的行。 将此行更改为以下内容:
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
笔记: 如果您的 VPS 上 JAVA_HOME
的值不同,请确保相应地更改此行。
hadoop-env.sh
文件应如下所示:
保存并关闭此文件。 在 hadoop-env.sh
文件中添加上述语句可确保 JAVA_HOME
变量的值在 Hadoop 启动时可用。
iii. 编辑 /usr/local/hadoop/etc/hadoop/core-site.xml
/usr/local/hadoop/etc/hadoop/core-site.xml
文件包含 Hadoop 在启动时使用的配置属性。 此文件可用于覆盖 Hadoop 启动时使用的默认设置。
使用以下命令使用 nano 打开此文件:
nano /usr/local/hadoop/etc/hadoop/core-site.xml
在此文件中,在 <configuration></configuration>
标记之间输入以下内容:
<property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property>
core-site.xml
文件应如下所示:
保存并关闭此文件。
iv. 编辑 /usr/local/hadoop/etc/hadoop/yarn-site.xml
/usr/local/hadoop/etc/hadoop/yarn-site.xml
文件包含 MapReduce 在启动时使用的配置属性。 此文件可用于覆盖 MapReduce 启动时使用的默认设置。
使用以下命令使用 nano 打开此文件:
nano /usr/local/hadoop/etc/hadoop/yarn-site.xml
在此文件中,在 <configuration></configuration>
标记之间输入以下内容:
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property>
yarn-site.xml
文件应如下所示:
保存并关闭此文件。
五。 创建和编辑 /usr/local/hadoop/etc/hadoop/mapred-site.xml
默认情况下,/usr/local/hadoop/etc/hadoop/
文件夹包含 /usr/local/hadoop/etc/hadoop/mapred-site.xml.template
文件,该文件必须重命名/复制为名称 mapred-site.xml
。 该文件用于指定 MapReduce 使用哪个框架。
这可以使用以下命令完成:
cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml
完成后,使用以下命令使用 nano 打开新创建的文件:
nano /usr/local/hadoop/etc/hadoop/mapred-site.xml
在此文件中,在 <configuration></configuration>
标记之间输入以下内容:
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
mapred-site.xml
文件应如下所示:
保存并关闭此文件。
六。 编辑 /usr/local/hadoop/etc/hadoop/hdfs-site.xml
必须为正在使用的集群中的每个主机配置 /usr/local/hadoop/etc/hadoop/hdfs-site.xml
。 它用于指定将用作该主机上的 namenode 和 datanode 的目录。
在编辑这个文件之前,我们需要为这个 Hadoop 安装创建两个目录,其中包含 namenode 和 datanode。 这可以使用以下命令完成:
mkdir -p /usr/local/hadoop_store/hdfs/namenode mkdir -p /usr/local/hadoop_store/hdfs/datanode
笔记: 您可以在不同的位置创建这些目录,但请确保相应地修改 hdfs-site.xml
的内容。
完成后,使用以下命令使用 nano 打开 /usr/local/hadoop/etc/hadoop/hdfs-site.xml
文件:
nano /usr/local/hadoop/etc/hadoop/hdfs-site.xml
在此文件中,在 <configuration></configuration>
标记之间输入以下内容:
<property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop_store/hdfs/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop_store/hdfs/datanode</value> </property>
hdfs-site.xml
文件应如下所示:
保存并关闭此文件。
格式化新的 Hadoop 文件系统
完成上述步骤中概述的所有配置后,需要对 Hadoop 文件系统进行格式化,以便它可以开始使用。 这是通过执行以下命令来完成的:
hdfs namenode -format
笔记: 这只需要在开始使用 Hadoop 之前完成一次。 如果在使用 Hadoop 后再次执行该命令,则会破坏 Hadoop 文件系统上的所有数据。
启动 Hadoop
剩下要做的就是启动新安装的单节点集群:
start-dfs.sh
执行此命令时,系统会提示您两次,并显示类似于以下内容的消息:
您确定要继续连接(是/否)?
为这两个提示输入 yes
并按回车键。 完成后,执行以下命令:
start-yarn.sh
执行上述两个命令将使 Hadoop 启动并运行。 您可以通过键入以下命令来验证这一点:
jps
执行此命令应该会显示类似于以下内容的内容:
如果您可以看到类似于上面屏幕截图中描述的结果,这意味着您现在有一个在您的 VPS 上运行的 Hadoop 功能实例。
下一步
如果您有一个设置为使用 Hadoop 的应用程序,您可以启动它并在新安装中开始使用它。 另一方面,如果您只是在玩耍和探索 Hadoop,您可以从在新文件系统上添加/操作数据或文件开始,以感受一下。