前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
先决条件
本教程的唯一先决条件是安装了 Ubuntu 13.10 x64 的 VPS。
您需要通过以下两种方式之一在命令行中执行命令:
-
使用 SSH 访问 droplet。
-
使用 Digital Ocean Droplet 管理面板中的 ‘Console Access’。
什么是 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
执行这两个命令的第一个后,可能会要求输入文件名。只需留空并按 Enter 键继续。第二个命令将新创建的密钥添加到授权密钥列表中,以便 Hadoop 可以在不提示密码的情况下使用 SSH。
3. 获取并安装 Hadoop
首先,让我们使用以下命令从镜像之一获取 Hadoop:
wget http://www.motorlogy.com/apache/hadoop/common/current/hadoop-2.3.0.tar.gz
注意: 此命令使用 Hadoop 网站上列出的镜像之一上的下载链接。镜像列表可以在此链接找到。如果愿意,可以选择任何其他镜像。要下载最新的稳定版本,请从所选镜像的 current 或 current2 目录中选择 hadoop-X.Y.Z.tar.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
i. 编辑 ~/.bashrc
在编辑您的主目录中的 .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 文件内容
保存并关闭此文件。在 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
文件应该类似于以下内容:
<!-- 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
文件应该类似于以下内容:
<!-- yarn-site.xml 文件内容 -->
保存并关闭此文件。
v. 创建和编辑 /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
文件应该类似于以下内容:
<!-- mapred-site.xml 文件内容 -->
保存并关闭此文件。
vi. 编辑 /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
文件应该类似于以下内容:
<!-- hdfs-site.xml 文件内容 -->
保存并关闭此文件。
格式化新的 Hadoop 文件系统
在完成上述步骤中的所有配置后,需要格式化 Hadoop 文件系统,以便开始使用。执行以下命令完成格式化:
hdfs namenode -format
注意: 这只需要在开始使用 Hadoop 之前执行一次。如果在 Hadoop 被使用后再次执行此命令,它将销毁 Hadoop 文件系统上的所有数据。
启动 Hadoop
剩下要做的就是启动新安装的单节点集群:
start-dfs.sh
在执行此命令时,您将会收到两次类似以下消息的提示:
Are you sure you want to continue connecting (yes/no)?
对于这两个提示,输入 yes
并按回车键。完成后,执行以下命令:
start-yarn.sh
执行上述两个命令将启动 Hadoop。您可以通过输入以下命令来验证:
jps
执行此命令应该显示类似以下内容:
!jps command
如果您看到类似于上面截图中的结果,这意味着您现在在您的 VPS 上运行着一个功能正常的 Hadoop 实例。
下一步
如果您有一个已设置好使用 Hadoop 的应用程序,您可以启动该应用程序并开始使用新安装的 Hadoop。另外,如果您只是在尝试和探索 Hadoop,您可以开始向新文件系统添加/操作数据或文件,以便对其有所了解。