如何无错误地从源代码构建 Hadoop
初步下载:
在开始之前,您需要下载以下内容。
此演练由 4 个阶段组成
- 在 VirtualBox 中创建一个可以支持的 CentOS 设备
构建 Hadoop
- 向设备添加 SSH 功能,以便可以将下载的先决条件从主机通过 scp 传送到来宾虚拟机
- 安装构建 Hadoop 所需的所有东西(实用程序和依赖项)
- 无错误地构建 Hadoop
第 1 阶段 - 为 VirtualBox 创建 CentOS 设备
首先打开 VirtualBox 并单击左上角的“新建”按钮。这将打开一个新窗口,询问有关您要创建的虚拟机设备的一些信息。
- 将其命名为“CentOS x64 – Hadoop Base”
- 选择 Linux 作为操作系统的“类型”
- 选择 RedHat(64 位)作为“版本”。
- 点击“下一步”
按照 VM 创建向导中的其余提示进行操作。我唯一改变的是“内存大小”段落(我使用 4096 MB)和“文件位置和大小”段落(我使用 128 GB)的默认设置。如果您的系统可以支持它,我会鼓励您这样做。 保留所有其他默认值
创建后,VM 将显示在 VirtualBox 窗口的左侧窗格中。
- 双击您刚刚创建的 VM,然后等待出现对话框,询问您要使用的 iso 文件。
- 当对话框出现时,单击右侧的文件夹图标并导航到/选择您在初步步骤中下载的“CentOS 最小 iso”。
- iso 列在下拉框中后,点击“开始”
出现提示时,在 VM 启动后,选择“Install CentOS 7”(这不是默认设置,您必须按“向上”箭头)并按“Enter”。当安装程序加载时,它会询问您的第一件事是您的键盘布局。我保留默认设置,然后单击右下角的“继续”按钮。这将打开安装摘要页面,您需要在其中更改 2 个区域:“安装目标”和“网络和主机名”
- 点击“安装目的地”
- 双击虚拟磁盘(确保背景为蓝色并且有复选标记)
- 单击“完成”返回“安装摘要”页面。
返回安装摘要页面,
- 点击“网络和主机名”
- 在此菜单屏幕中,通过单击右侧的切换开关打开以太网网络。
- 点击左上角的“完成”。
完成两项修改后,您可以单击右下角的“开始安装”按钮。当 iso 安装到您的系统时,您应该花时间通过
提供 root 密码
- 点击页面左上角的那个选项
- 填写它显示的表格
- 单击“完成”(如果您选择的密码被认为是弱密码,则必须双击“完成”才能接受)。
我添加了密码,但我懒得添加任何非 root 用户。
一切都安装好后,点击屏幕右下角的“重启”按钮。
一旦系统重新启动,选择 CentOS 7 并允许它启动。通过以 root 身份登录来检查您的凭据,然后通过单击窗口右上角的红色 X 按钮并在出现提示时选择“关闭计算机电源”来关闭 CentOS VM。
这完成了第 1 阶段
您现在应该只关注 VirtualBox
第 2 阶段 - 向 VM 添加 SSH 功能以支持下载传输
- 首先单击设备打开 CentOS 设备的设置
- 接下来,点击VirtualBox主菜单左上角的“设置”按钮。这将打开一个新窗口。
- 在新窗口的左侧窗格中,单击“网络”,这将显示一组适配器选项卡。
- 现在单击“高级”标签左侧的三角形。
- 这将显示一系列选项,但您需要单击的是标有“端口转发”的按钮
这将打开另一个窗口,您可以在其中设置端口转发规则。
- 单击右上角的绿色加号。这将产生一行,您可以在其中输入端口转发规则。
- 将以下规则添加到行中
名称= ssh,主机端口=2222,访客端口=22
- 单击端口转发窗口上的“确定”按钮
- 单击“设备设置”窗口中的“确定”按钮。
有了这个规则,你现在应该能够从你的 Windows 主机通过 ssh 到 CentOS 来宾的 2222 端口并避免以下错误:
ssh:连接到主机 localhost 端口 22:连接被拒绝
您现在应该再次查看 VirtualBox。
- 启动 CentOS VM 设备并以 root 身份登录。
- 登录后,从命令提示符执行以下行。
yum –y install openssh-server openssh-client
此命令将在 CentOS 虚拟机上安装 ssh 服务器。安装完成后,输入以下命令确认 ssh 服务器正在运行。
ps –aux | grep sshd
此命令应返回 2 个显示 sshd(ssh 守护进程)的进程。一个是 grep 命令本身。另一个是您在后台运行的服务器。
现在我们需要确保 ssh 确实生成了与 WinSCP 通信所需的密钥。发出以下命令并确保所有键的字节大小值都不为零。
ls -l /etc/ssh
如果密钥的大小为 0 字节,则需要删除它们,重新启动 sshd 守护进程,并验证重新启动 sshd 时是否重新生成了密钥。为此,请执行以下命令
rm –rf /etc/ssh/ssh*key*
systemctl restart sshd
ls -l /etc/ssh
此过程将有助于避免意外的“连接被 127.0.0.1 关闭”错误。
现在我们已经启动了一个 ssh 守护进程并生成了密钥,我们将测试连接。首先打开 WinSCP。并在弹出的开始菜单中输入以下值。
主机名 = localhost,端口号 = 2222,用户名 = root,密码 = ,文件协议 = SCP。
请注意,您需要最后设置“文件协议”。如果你不这样做,当你输入一个它不期望的“端口号”时,它会试图比你聪明。输入所有值时。单击“登录”按钮并接受/单击更新或确定您收到的任何安全警告。
登录后,在 Host 和 VM Guest 之间移动一个文件以确认一切正常。
这里不重点介绍,你也可以使用 Cygwin 连接虚拟机,对诊断连接问题很有用。您需要输入以获取详细诊断输出的命令是
ssh –vvv –p 2222 root@localhost
这完成了第 2 阶段
第 3 阶段 - 安装构建 Hadoop 所需的实用程序和依赖项
我们的 CentOS 发行版确实是“准系统”,因此我们需要安装构建 Hadoop 所需的一切。为此,我们将在 Windows 中下载大部分内容,然后通过 WinSCP 将它们移至 VM。
在我们开始之前,我们需要在 CentOS 虚拟机上的 root 用户的主目录中添加一个“下载”目录,方法是在 CentOS 命令行中发出以下命令。
mkdir ~/downloads/
我们现在可以开始下载 Hadoop 依赖项了。我们会将所有内容下载到 Windows,然后使用 WinSCP 将其移动到 VM。
首先从 - http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 下载 Java 7 JDK
忽略页面顶部的“公共更新结束”错误消息。 Java 7 是 Apache 推荐的。
你要下载 jdk-7u79-linux-x64.rpm 文件
下载后,使用 WinSCP 导航到主机计算机的下载目录和新创建的访客虚拟机的“下载”目录(您可能需要单击 WinSCP 窗格虚拟机一侧的刷新图标才能查看目录)。将 jdk 文件从 Host 拖放到 VM Guest。
现在我们只需要在 CentOS VM 上安装 JDK。在 CentOS 命令行中,将您的目录更改为我们在根目录下创建的“downloads”文件夹,在“downloads”目录中使用 rpm 安装 java 7。
cd ~/downloads
rpm –ihv jdk-7u79-linux-x64.rpm
安装完成后,您可以通过输入验证它
java –version
这将产生说明您已安装 Java 运行时环境的输出。
接下来,我们将安装 Hadoop 成功构建所需的包子集。该列表直接取自 Apache 网站:https://wiki.apache.org/hadoop/HowToContribute,我们需要在命令行中输入以检索它们的命令是:
yum -y install lzo-devel zlib-devel gcc autoconf automake libtool openssl-devel fuse-devel
接下来我们要安装 Apache 的 Maven。你可以在这里下载:
https://archive.apache.org/dist/maven/binaries/
Apache 的网站说您可以使用版本 3+。我使用的是 3.2.2 版本,因此请下载此文件以进行后续操作:
apache-maven-3.2.2-bin.tar.gz
下载文件后,使用 WinSCP 将其从主机移动到来宾 VM 的“下载”文件夹,就像处理 JDK 文件一样。然后我们将文件解压到 /usr/local/ 目录,并在 /usr/local/ 目录中创建一个指向 maven 文件夹的符号链接,使用以下三个命令。
tar xzf apache-maven-3.2.2-bin.tar.gz -C /usr/local
cd /usr/local
ln -s apache-maven-3.2.2 maven
我们现在需要将 Maven 的 bin 目录添加到 $PATH 变量中。我们通过编辑根主目录中的 .bashrc 文件来做到这一点。使用以下命令在 vi 中打开文件进行编辑
vi ~/.bashrc
这将在 vi 编辑器中打开 bash 文件(如果需要,可以在此处找到有关 vi 的教程:http://www.unix-manuals.com/tutorials/vi/vi-in-10-1.html)按照这些说明正确更新文件。
- 按“a”键进入编辑模式
- 将以下行添加到文件中:
- 导出 M2_HOME=/usr/local/maven
- 导出 PATH=$M2_HOME/bin:$PATH
- 按“Esc”键退出编辑模式
- 键入“:wq” - 它会自动显示在 vi 命令行(屏幕左下角)
- 按“Enter”
现在退出 CentOS。重新登录 CentOS,并检查以确保使用以下命令正确设置了新的 PATH 变量。
exit
<log back in as root>
mvn –version
您应该会看到指示当前已安装 maven 的输出
接下来我们需要为 gcc 安装 C++ 支持。我们使用以下一行命令来做到这一点
yum –y install gcc-c++.x86_64
接下来我们需要安装 git 以便我们可以拉取 Hadoop 源代码。
yum –y install git
一旦你有了 git。继续并拉下 Hadoop 源。在构建源代码之前,我们还需要一件事(ProtocolBuffer),但我们需要在下载 ProtocolBuffer 之前查看 repo 中的 BUILDING.txt 文件,以确保我们获得正确的版本。
要获取 Hadoop 源,我们运行 git clone 命令。只需从 CentOS 命令行执行以下命令即可下载 Hadoop 存储库。
cd /usr/local
git clone git://git.apache.org/hadoop.git
克隆操作将在您的 /usr/local 目录中放置一个“hadoop”目录。操作完成并返回命令提示符后,使用以下命令查看新 hadoop 目录中的 BUILDING.txt 文件:
less /usr/local/hadoop/BUILDING.txt
在文件的“要求”部分,它说明了我们正确构建 Hadoop 所需的 ProtocolBuffer 版本。在这种情况下,它是 ProtocolBuffer 2.5.0。有了这些信息,我们可以通过按“q”退出命令提示符。
现在我们终于可以安装 Hadoop 需要的最后一个东西了:ProtocolBuffer。要获得正确版本的 ProtocolBuffer,我们访问 ProtocolBuffer 发布页面:
https://github.com/google/protobuf/releases
向下滚动,直到我们看到 Hadoop 编译所需的版本。对于本演练,您需要下载以下文件。
protobuf-2.5.0.tar.gz
下载后,使用 WinSCP 并将其传输到 VM 的“下载”文件夹,就像您之前为其他下载所做的那样。一旦文件位于 VM 的“下载”文件夹中,发出以下命令在 CentOS 上安装 ProtocolBuffer
cd ~/downloads
tar xzf protobuf-2.5.0.tar.gz -C /usr/local
cd /usr/local/protobuf-2.5.0
./configure
`制作'
make install
完成此操作后,将安装构建 Hadoop 所需的所有必备实用程序和依赖项。
这完成了第 3 阶段
第 4 阶段 - 构建没有错误的 Hadoop
转到 Hadoop 目录,然后使用以下命令运行 Maven 跳过测试:
cd /usr/local/hadoop
mvn clean install -DskipTests
现在构建应该没有任何问题了,当一切都完成后,您应该会看到如下所示的屏幕。
这样就完成了遍历
我希望你们中的一些人觉得它有帮助。