前提条件
本教程的唯一前提是安装了 Ubuntu 13.10 x64 的VPS。
您需要从命令行执行命令,您可以以两种方式之一执行:
- 使用 SSH 来访问 dropplet.
- 从数字海洋 dropplet 管理面板中使用
控制台访问
Hadoop是什么?
Hadoop是一个框架(由软件库组成),它简化了分布在服务器群集中的数据集的处理。
HDFS 是 Hadoop 使用的存储所有数据的文件系统. 该文件系统涵盖了 Hadoop 正在使用的所有节点. 这些节点可以位于单个 VPS 上,或者可以分布在大量虚拟服务器上。
MapReduce 是协调 Hadoop 的所有活动的框架,它处理群集中的不同节点的工作分配。
使用 Hadoop 的好处
Hadoop 的架构允许您根据需要扩展硬件,并且可以逐步添加新节点,而无需担心数据格式的变化或文件系统上的应用程序的处理。
Hadoop最重要的功能之一是,它允许您通过代替便宜的商品服务器以昂贵的服务器来节省巨额金钱,这是可能的,因为Hadoop将错误容忍的责任从硬件层转移到应用层。
安装 Hadoop
安装和运行Hadoop非常简单,但是,由于这个过程需要编辑多个配置和设置文件,请确保每个步骤都遵循。
1、安装Java
Hadoop 需要安装 Java,所以让我们先安装 Java:
1apt-get update
2apt-get install default-jdk
这些命令会更新 VPS 上的软件包信息,然后安装 Java. 执行这些命令后,执行以下命令来验证 Java 已安装:
1java -version
如果安装了Java,则应该如下图像所示显示版本详细信息:
创建和设置SSH证书
Hadoop 使用 SSH (访问其节点),通常需要用户输入密码,但是通过使用以下命令创建和设置 SSH 证书可以消除此要求:
1ssh-keygen -t rsa -P ''
2cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
在执行这两个命令中的第一个命令后,您可能会被要求提供一个文件名。只需将其留空,然后按 Enter 键继续执行。第二个命令将新创建的密钥添加到授权密钥列表中,以便 Hadoop 可以使用 SSH 而无需请求密码。
3、重新安装和安装Hadoop
首先,让我们使用以下命令从镜子中获取Hadoop:
1wget http://www.motorlogy.com/apache/hadoop/common/current/hadoop-2.3.0.tar.gz
** 注意: ** 此命令使用 Hadoop 网站上列出的镜子之一的下载链接。 镜子列表可以找到(此链接上)(http://www.apache.org/dyn/closer.cgi/hadoop/common/). 如果您想要,您可以选择任何其他镜子。 若要下载最新稳定版本,请从 ** current** 或 ** current2** 目录中选择 _hadoop-X.Y.Z.tar.gz* 文件。
在下载 Hadoop 包后,执行以下命令来提取它:
1tar xfz hadoop-2.3.0.tar.gz
此命令将将该包中的所有文件提取到名为hadoop-2.3.0
的目录中. 对于本教程,Hadoop安装将使用以下命令移动到/usr/local/hadoop
目录中:
1mv hadoop-2.3.0 /usr/local/hadoop
** 注意: ** 提取的文件夹的名称取决于您下载和提取的 Hadoop 版本. 如果您的版本不同于本教程中使用的版本,请相应地更改上述命令。
编辑和设置配置文件
要完成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
在您主目录中编辑 .bashrc
文件之前,我们需要找到 Java 已安装的路径,以设置 JAVA_HOME
环境变量。
1update-alternatives --config java
这将显示如下东西:
这个命令显示的完整路径是:
1/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
「JAVA_HOME」的值在上面的路径中是「/jre/bin/java」之前的一切 - 在这种情况下,是「/usr/lib/jvm/java-7-openjdk-amd64」。
现在使用nano
(或您最喜欢的编辑器)来编辑 ~/.bashrc,使用以下命令:
1nano ~/.bashrc
这将打开.bashrc 文件在文本编辑器中. 进入文件的尽头并粘贴 / 键入以下内容:
1#HADOOP VARIABLES START
2export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
3export HADOOP_INSTALL=/usr/local/hadoop
4export PATH=$PATH:$HADOOP_INSTALL/bin
5export PATH=$PATH:$HADOOP_INSTALL/sbin
6export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
7export HADOOP_COMMON_HOME=$HADOOP_INSTALL
8export HADOOP_HDFS_HOME=$HADOOP_INSTALL
9export YARN_HOME=$HADOOP_INSTALL
10export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
11export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
12#HADOOP VARIABLES END
注1: 如果您的VPS上的JAVA_HOME
值不同,请确保更改上述内容中的第一个导出
陈述。
注2: 使用 nano 打开和编辑的文件可以使用Ctrl + X
来保存。 在要保存更改的提示下,键入Y
。
.bashrc 文件的结尾应该是这样的:
在保存和关闭.bashrc 文件后,执行以下命令,以便您的系统识别新创建的环境变量:
1source ~/.bashrc
将上述内容放入.bashrc 文件中,确保这些变量在 VPS 启动时始终可用。
编辑 /usr/本地/hadoop/etc/hadoop/hadoop-env.sh
使用 nano 打开 /usr/local/hadoop/etc/hadoop/hadoop-env.sh
文件,使用以下命令:
1nano /usr/local/hadoop/etc/hadoop/hadoop-env.sh
在此檔案中,尋找輸出「JAVA_HOME」變量的行。
1export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
** 注意:** 如果您的VPS上的JAVA_HOME
值不同,请确保相应地更改此行。
hadoop-env.sh
文件应该看起来像这样:
将上述陈述添加到hadoop-env.sh
文件中,确保在启动时,Hadoop 可以使用JAVA_HOME
变量的值。
编辑 /usr/local/hadoop/etc/hadoop/core-site.xml
该 /usr/local/hadoop/etc/hadoop/core-site.xml
文件包含 Hadoop 启动时使用的配置属性。
使用 nano 打开此文件,使用以下命令:
1nano /usr/local/hadoop/etc/hadoop/core-site.xml
在此文件中,在<configuration></configuration>
标签之间输入以下内容:
1<property>
2 <name>fs.default.name</name>
3 <value>hdfs://localhost:9000</value>
4</property>
「core-site.xml」檔案應該看起來像這樣:
保存并关闭此文件。
编辑 /usr/本地/hadoop/etc/hadoop/yarn-site.xml
/usr/local/hadoop/etc/hadoop/yarn-site.xml
文件包含 MapReduce 在启动时使用的配置属性。
使用 nano 打开此文件,使用以下命令:
1nano /usr/local/hadoop/etc/hadoop/yarn-site.xml
在此文件中,在<configuration></configuration>
标签之间输入以下内容:
1<property>
2 <name>yarn.nodemanager.aux-services</name>
3 <value>mapreduce_shuffle</value>
4</property>
5<property>
6 <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
7 <value>org.apache.hadoop.mapred.ShuffleHandler</value>
8</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。
可以使用以下命令做到这一点:
1cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml
一旦完成,请使用以下命令打开新创建的 nano 文件:
1nano /usr/local/hadoop/etc/hadoop/mapred-site.xml
在此文件中,在<configuration></configuration>
标签之间输入以下内容:
1<property>
2 <name>mapreduce.framework.name</name>
3 <value>yarn</value>
4</property>
「mapred-site.xml」檔案應該看起來像這樣:
保存并关闭此文件。
编辑 /usr/本地/hadoop/etc/hadoop/hdfs-site.xml
/usr/local/hadoop/etc/hadoop/hdfs-site.xml
必须为正在使用的集群中的每个主机配置,用于指定将作为该主机上的 namenode 和 ** datanode** 使用的目录。
在编辑此文件之前,我们需要创建两个目录,其中将包含此 Hadoop 安装的 namenode 和 ** datanode** 。
1mkdir -p /usr/local/hadoop_store/hdfs/namenode
2mkdir -p /usr/local/hadoop_store/hdfs/datanode
** 注意: ** 您可以在不同的位置创建这些目录,但请确保相应地修改hdfs-site.xml
的内容。
完成此操作后,请使用以下命令使用 nano 打开 /usr/local/hadoop/etc/hadoop/hdfs-site.xml
文件:
1nano /usr/local/hadoop/etc/hadoop/hdfs-site.xml
在此文件中,在<configuration></configuration>
标签之间输入以下内容:
1<property>
2 <name>dfs.replication</name>
3 <value>1</value>
4 </property>
5 <property>
6 <name>dfs.namenode.name.dir</name>
7 <value>file:/usr/local/hadoop_store/hdfs/namenode</value>
8 </property>
9 <property>
10 <name>dfs.datanode.data.dir</name>
11 <value>file:/usr/local/hadoop_store/hdfs/datanode</value>
12 </property>
「hdfs-site.xml」檔案應該看起來像這樣:
保存并关闭此文件。
格式化新 Hadoop 文件系统
在完成上述步骤中描述的所有配置后,Hadoop文件系统需要进行格式化,以便开始使用。
1hdfs namenode -format
** 注意:** 此操作只需要在开始使用 Hadoop 之前进行一次,如果在使用 Hadoop 后再次执行此命令,则会破坏 Hadoop 文件系统上的所有数据。
启动Hadoop
只剩下做的是启动新安装的单节点集群:
1start-dfs.sh
在执行此命令时,您将被提示两次发出类似于以下的消息:
您是否确定要继续连接(是/否)?
输入是
对这两个提示,然后按入键。一旦完成,执行以下命令:
1start-yarn.sh
執行上述兩個命令會讓 Hadoop 啟動並執行,您可以通過輸入以下命令來驗證:
1jps
执行此命令应该向您显示一些类似于以下的东西:
如果您可以看到类似于上面的屏幕截图中所描述的结果,这意味着您现在在 VPS 上运行了 Hadoop 的功能实例。
下一步
如果你有一个设置使用Hadoop的应用程序,你可以打开它并开始使用它在新的安装中。另一方面,如果你只是在玩和探索Hadoop,你可以开始通过在新文件系统上添加/操纵数据或文件来了解它。