如何安装Hadoop?

我正在尝试在Ubuntu 12.04版本中安装Hadoop。 按照http://michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/的说明,我从Ubuntu软件中心安装了java-6-openjdk 。 我在.bashrc设置了java_home 。 还要在Hadoop conf/env.sh设置java_home 。 格式化namenode时,我收到以下错误:

 usr/lib/jvm/java-6-openjdk/bin/java no such file or directory. 

谢谢。 但它是64位操作系统。

我在12.04时遵循的指南是:

  • 在Ubuntu上部署Hadoop 2
  • Michael Noll的Hadoop(单节点)
  • Ubuntu 12.04上的MyLearning Hadoop(单节点)

我实际上反对MyLearning,因为它推荐的第一件事是Oracle Java 7而不是OpenJDK 7,但是当我尝试使用OpenJDK 7时我遇到了一些问题,所以我不得不使用Oracle。

该指南大多是直截了当的,这里是:

  1. 安装Java

     sudo add-apt-repository ppa:webupd8team/java sudo apt-get update && sudo apt-get upgrade sudo apt-get install oracle-java7-installer 
  2. 创建Hadoop用户

     sudo addgroup hadoop sudo adduser --ingroup hadoop hduser 

    hduser是您希望拥有的Hadoop用户。

  3. 配置SSH

     su - hduser ssh-keygen -t rsa -P "" cat .ssh/id_rsa.pub >> .ssh/authorized_keys 

    为了确保SSH安装顺利,您可以打开一个新终端并尝试使用hduser通过以下命令创建ssh会话:

     ssh localhost 

    如果localhost没有连接,则重新安装ssh(您可能需要将hduser添加到sudo,如下所示)

     sudo apt-get install openssh-server 
  4. 编辑Sudoers

     sudo visudo 
  5. 在最后添加行以将hduser添加到sudoers中

     hduser ALL=(ALL:ALL) ALL 

    要保存按CTRL + X ,请键入Y并按Enter

  6. 禁用IPv6

     sudo gedit /etc/sysctl.conf 

    要么

     sudo nano /etc/sysctl.conf 

    复制文件末尾的以下行:

     #disable ipv6 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 

    如果您遇到问题告诉您,您没有权限,只需使用root帐户运行上一个命令(如果sudo不够。对我来说就是这样)

  7. 现在重启。

    你也可以做sudo sysctl -p但我宁愿重启。

    重新启动后,检查以确保IPv6已关闭:

     cat /proc/sys/net/ipv6/conf/all/disable_ipv6 

    应该说1 。 如果它说0 ,你错过了什么。

  8. 安装Hadoop

    有几种方法可以做到这一点,指南建议从Apache Hadoop站点下载并解压缩你的hduser主文件夹中的文件。 将解压缩的文件夹重命名为hadoop

    另一种方法是使用经过12.04测试的PPA:

     sudo add-apt-repository ppa:hadoop-ubuntu/stable sudo apt-get update && sudo apt-get upgrade sudo apt-get install hadoop 

    注意:PPA可能适用于某些人而其他人则不适用。 我试过的那个是从官方网站下载,因为我不知道PPA。

  9. 更新$HOME/.bashrc

    您需要更新hduser.bashrc (以及管理Hadoop所需的每个用户)。 要打开.bashrc文件,您需要以root身份打开它:

     sudo gedit /home/hduser/.bashrc 

    要么

     sudo nano /home/hduser/.bashrc 

    然后,您将在.bashrc文件的末尾添加以下配置

     # Set Hadoop-related environment variables export HADOOP_HOME=/home/hduser/hadoop # Set JAVA_HOME (we will also configure JAVA_HOME directly for Hadoop later on)` export JAVA_HOME=/usr/lib/jvm/java-7-oracle 

    现在,如果你有OpenJDK7,它看起来像这样:

     export JAVA_HOME=/usr/lib/java-7-openjdk-amd64 

    这里需要注意的是Java驻留在AMD64版本中的文件夹。 如果上述方法不起作用,您可以尝试查找该特定文件夹或设置将用于的Java:

     sudo update-alternatives --config java 

    现在有一些有用的别名:

     # Some convenient aliases and functions for running Hadoop-related commands unalias fs &> /dev/null alias fs="hadoop fs" unalias hls &> /dev/null alias hls="fs -ls" # Add Hadoop bin/ directory to PATH export PATH=$PATH:$HADOOP_HOME/bin 
  10. 配置Hadoop

    以下是我们可以用来进行正确配置的配置文件。 您将与Hadoop一起使用的一些文件是( 本网站的更多信息):

    start-dfs.sh – 启动Hadoop DFS守护进程,namenode和datanode。 在start-mapred.sh之前使用它

    stop-dfs.sh – 停止Hadoop DFS守护进程。

    start-mapred.sh – 启动Hadoop Map / Reduce守护进程,jobtracker和tasktrackers。

    stop-mapred.sh – 停止Hadoop Map / Reduce守护进程。

    start-all.sh – 启动所有Hadoop守护进程,namenode,datanode,jobtracker和tasktrackers。 不推荐使用; 使用start-dfs.sh然后start-mapred.sh

    stop-all.sh – 停止所有Hadoop守护进程。 不推荐使用; 使用stop-mapred.sh然后stop-dfs.sh

    但在我们开始使用它们之前,我们需要修改/conf文件夹中的几个文件。

    hadoop-env.sh

    查找文件hadoop-env.sh ,我们只需更新此文件中的JAVA_HOME变量:

     sudo gedit /home/hduser/hadoop/conf/hadoop-env.sh 

    要么

     sudo nano /home/hduser/hadoop/conf/hadoop-env.sh 

    或者在最新版本中

     sudo nano /etc/hadoop/conf.empty/hadoop-env.sh 

    要么

     sudo nano /etc/hadoop/hadoop-env.sh 

    然后更改以下行:

     # export JAVA_HOME=/usr/lib/j2sdk1.5-sun 

     export JAVA_HOME=/usr/lib/jvm/java-7-oracle 

    注意:如果出现Error: JAVA_HOME is not set启动服务时Error: JAVA_HOME is not set错误,则忘记取消注释上一行(只需删除#)。

    核心的site.xml

    现在我们需要为Hadoop框架创建一个临时目录。 如果您需要此环境进行测试或快速原型(例如为您的个人测试开发简单的hadoop程序……),我建议在/home/hduser/目录下创建此文件夹,否则,您应该在共享中创建此文件夹放在共享文件夹下(例如/ usr / local …)但您可能会面临一些安全问题。 但是为了克服可能由安全性引起的exception(比如java.io.IOException),我在hduser空间下创建了tmp文件夹。

    要创建此文件夹,请键入以下命令:

     sudo mkdir /home/hduser/tmp 

    请注意,如果您想创建另一个管理员用户(例如hadoop组中的hduser2),您应该使用以下命令授予他对此文件夹的读写权限:

     sudo chown hduser:hadoop /home/hduser/tmp sudo chmod 755 /home/hduser/tmp 

    现在,我们可以打开hadoop/conf/core-site.xml来编辑hadoop.tmp.dir条目。 我们可以使用文本编辑器打开core-site.xml:

     sudo gedit /home/hduser/etc/hadoop/core-site.xml 

    要么

     nano /home/hduser/etc/hadoop/core-site.xml 

    然后 xml元素之间添加以下配置:

      hadoop.tmp.dir /home/hduser/tmp A base for other temporary directories.   fs.default.name hdfs://localhost:54310 The name of the default file system. A URI whose scheme and authority determine the FileSystem implementation. The uri's scheme determines the config property (fs.SCHEME.impl) naming the FileSystem implementation class. The uri's authority is used to determine the host, port, etc. for a filesystem.  

    现在编辑mapred-site.xml

      mapred.job.tracker localhost:54311 The host and port that the MapReduce job tracker runs at. If "local", then jobs are run in-process as a single map and reduce task.   

    现在编辑hdfs-site.xml

      dfs.replication 1 Default block replication. The actual number of replications can be specified when the file is created. The default is used if replication is not specified in create time.   
  11. 格式化NameNode

    现在您可以开始使用Node了。 第一种格式:

     ~/hduser/hadoop/bin/hadoop namenode -format 

    要么

     ./home/hduser/hadoop/bin/hadoop namenode -format 

    您应该格式化HDFS中的NameNode。 系统运行时,您不应执行此步骤。 它通常在您第一次安装时完成一次。

  12. 启动Hadoop集群

    您需要导航到hadoop / bin目录并运行./start-all.sh脚本。

     cd ~/hduser/hadoop/bin/ start-all.sh 

    如果您的版本与指南中显示的版本不同(如果使用PPA或更新版本,您最有可能获得此版本),请尝试以下方式:

     cd ~/hduser/hadoop/bin/ start-dfs.sh start-mapred.sh 

    这将在您的计算机上启动Namenode,Datanode,Jobtracker和Tasktracker。

  13. 检查Hadoop是否正在运行

    有一个很好的工具叫做jps 。 您可以使用它来确保所有服务都已启动。 在您的hadoop bin文件夹类型中:

     jps 

    它应该向您展示所有与Hadoop相关的进程。

    注意:由于这是在6个月前为我做的,如果有任何部分不工作让我知道。

使用Juju的Hadoop(Hadoop的Juju魅力)

取自Charming Hadoop

我将假设已经设置了以下内容:

  • 你有一个Juju已经设置的服务器
  • 您可以访问服务器(本地或远程)
  • 您已配置Juju并准备开始添加魅力
  • 你使用的是12.04(这是因为我用12.04测试了所有这些)
  • 您已经配置了~/.juju/environments.yaml ,其中包含有关您将使用的服务器的信息,包括PPA源。

好的,现在按照以下步骤运行Hadoop服务:

  1. 为Hadoop引导环境

     juju bootstrap 

    等到它完成然后检查它是否正确连接:

     juju status 
  2. 部署Hadoop(主和从)

     juju deploy --constraints="instance-type=m1.large" hadoop hadoop-master juju deploy --constraints="instance-type=m1.medium" -n 5 hadoop hadoop-slave 
  3. 建立关系

     juju add-relation hadoop-master:namenode hadoop-slave:datanode juju add-relation hadoop-master:jobtracker hadoop-slave:tasktracker 
  4. 暴露Hadoop(因为您已经部署并创建了服务应该运行的关系)

     juju expose hadoop-master 

    并检查状态以查看它是否正常工作:

     juju status hadoop-master 

到目前为止,您已经有了一个正在运行的Hadoop。 您可以在提供的链接或官方Juju Charm for Hadoop中找到更多可以做的事情

有关最新的JuJu Charms(设置,分步指南等),您可以访问: JuJu Charms并制作您自己的JuJu环境,并查看每个文件的设置方式以及每个服务的连接方式。

我通过将JAVA_HOME的路径JAVA_HOMEusr/lib/jvm/java-6-openjdk-amd64成功安装Hadoop。

源于@Luis Alvarado的回答 ,这是我的Ubuntu 14.04和Hadoop 2.5.1的版本

简单来说

  1. 安装Java
  2. 为Hadoop hduser准备执行用户
  3. 从现在开始切换到hduser
  4. 允许hduser通过ssh使用pass-phrase-less进行远程访问
  5. 禁用IPv6
  6. 下载并配置Hadoop包
  7. 准备系统路径$ HADOOP_HOME和$ JAVA_HOME
  8. 配置Hadoop的服务
  9. 启动Hadoop的服务

完成。 祝好运!

细节步骤

安装Java

下载并安装

 $ sudo add-apt-repository ppa:webupd8team/java $ sudo apt-get update && sudo apt-get upgrade $ sudo apt-get install oracle-java7-installer 

确保安装了Java7

 $ which java $ ls -l /usr/bin/java $ ls -l /etc/alternatives/java 

我们应该让java指向/usr/lib/jvm/java-7-oracle/jre/bin/java

为Hadoop hduser准备执行用户

在组hadoop创建用户hduser

 $ sudo addgroup hadoop $ sudo adduser --ingroup hadoop hduser 

授予hduser sudo特权

编辑sudo

 $ sudo visudo 

添加到最后这一行

 hduser ALL=(ALL:ALL) ALL 

从现在开始切换到hduser

 $ su - hduser 

允许hduser通过ssh使用pass-phrase-less进行远程访问

安装openssh

 $ sudo apt-get install openssh-server 

为SSH连接生成RSA公钥/私钥; passphrase为空parameter -P ""

 $ ssh-keygen -t rsa -P "" $ cat .ssh/id_rsa.pub >> .ssh/authorized_keys 

确保hduser可以在没有密码的情况下在本地ssh远程

 $ ssh localhost 

禁用IPv6

编辑配置文件

 $ sudo nano /etc/sysctl.conf 

复制到最后

 #disable ipv6 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 

通过重新启动或呼叫确保IPv6已关闭

 $ sudo sysctl -p 

然后打电话

 $ cat /proc/sys/net/ipv6/conf/all/disable_ipv6 

它应该说1表示OK ^^

下载并配置Hadoop包

从Apache Hadoop站点下载Hadoop 2.5.1软件包

此包的直接URL是此链接

 http://www.eu.apache.org/dist/hadoop/core/hadoop-2.5.1/hadoop-2.5.1.tar.gz 

所以让我们下载到hduser的主文件夹,解压缩,并将其重命名为hadoop

 $ wget http://www.eu.apache.org/dist/hadoop/core/hadoop-2.5.1/hadoop-2.5.1.tar.gz $ tar -xvzf hadoop-2.5.1.tar.gz $ mv hadoop-2.5.1 hadoop 

确保我们将Hadoop存储在hduser home中

 $ ls /home/hduser/hadoop 

准备系统路径$ HADOOP_HOME和$ JAVA_HOME

编辑hduser的.bashrc文件

 $ nano .bashrc 

$HADOOP_HOME$JAVA_HOME结束值

 # Set Hadoop-related environment variables export HADOOP_HOME=/home/hduser/hadoop # Set JAVA_HOME (we will also configure JAVA_HOME directly for Hadoop later on) export JAVA_HOME=/usr/lib/jvm/java-7-oracle 

将Hadoop binary文件夹添加到系统$PATH

 export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH 

打开一个新终端,以hduser身份hduser ,并确保使用可用命令的$ HADOOP_HOME

 $ echo $HADOOP_HOME $ which start-all.sh $ which start-dfs.sh $ which start-yarn.sh 

我们应该看到这些名字的完整路径。

配置Hadoop的服务

Hadoop中的每个组件都使用XML文件进行配置。

  • 常见属性位于core-site.xml中

  • HDFS属性位于hdfs-site.xml中

  • MapReduce属性放在mapred-site.xml中

在此处输入图像描述

这些文件都位于$ HADOOP_HOME / etc / hadoop文件夹中

再次通过编辑行来定义hadoop-env.sh的JAVA_HOME

 export JAVA_HOME=/usr/lib/jvm/java-7-oracle 

core-site.xml中定义Hadoop temp folderfile system名称

  ...  hadoop.tmp.dir /home/hduser/tmp A base for other temporary directories.   fs.default.name hdfs://localhost:54310 The name of the default file system. A URI whose scheme and authority determine the FileSystem implementation. The uri's scheme determines the config property (fs.SCHEME.impl) naming the FileSystem implementation class. The uri's authority is used to determine the host, port, etc. for a filesystem.  ...  

我们需要按照/home/hduser/tmp配置准备这个temp folder

 $ cd /home/hduser $ mkdir tmp $ chown hduser:hadoop tmp $ chmod 755 tmp 

hdfs-site.xml中定义file systemblock replication

  ...  dfs.replication 1 Default block replication. The actual number of replications can be specified when the file is created. The default is used if replication is not specified in create time.   ...  

mapred-site.xml中定义map-reduce job

  ...  mapred.job.tracker localhost:54311 The host and port that the MapReduce job tracker runs at. If "local", then jobs are run in-process as a single map and reduce task.   ...  

格式name node

 $ hdfs namenode -format 

启动Hadoop服务

呼叫

 $ start-dfs.sh && start-yarn.sh 

这两个命令位于$ HADOOP_HOME / sbin ,我们之前添加到系统$ PATH。

确保Hadoop服务正确启动

 $ jps 

我们应该看到

在此处输入图像描述

为了能够使用apt-get命令安装sun-java ,您需要在名为sources.list的文件中添加一行。 该文件可以在/etc/apt/sources.list找到。

使用以下命令打开文件:

 sudo nano /etc/apt/sources.list 

然后在该文件的最底部(底部)复制/粘贴该行:

 deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse 

现在按Ctrl + X退出, y退出保存。


现在输入命令:

 sudo apt-get update 

完成后,您可以成功运行命令:

 sudo apt-get install sun-java6-jdk 

有关更新的教程(不确定差异),请查看hadoop截屏video教程。 它们提供video和下面安装的实际命令。 此外,如果您通过电子邮件发送作者,他很乐意回复并帮助您解决问题。

这些说明与@Luis回复的说明大致相似。

请按照以下步骤进行操作……非常酷且简单的解释,以及所有可能的故障排除。即使像我这样的初学者也不会遇到任何问题。 学分转到http://www.bogotobogo.com/ 。