简单来说

简单来说

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

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

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

答案1

我在使用 12.04 时遵循的指南是:

我实际上反对 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

    您需要更新.bashrchduser以及管理 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-环境变量

    查找文件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错误,则您忘记取消注释上一行(只需删除#)。

    核心站点.xml

    现在我们需要为 Hadoop 框架创建一个临时目录。如果您需要此环境进行测试或快速原型(例如,为您的个人测试开发简单的 Hadoop 程序...),我建议在/home/hduser/目录下创建此文件夹,否则,您应该在共享文件夹下的共享位置创建此文件夹(如 /usr/local...),但您可能会遇到一些安全问题。但为了克服可能由安全性引起的异常(如 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
    

    然后添加以下配置<configure>xml 元素之间

    <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/hduser/tmp</value>
      <description>A base for other temporary directories.</description>
    </property>
    
    <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:54310</value>
      <description>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.</description>
    </property>
    

    现在编辑mapred-site.xml

    <property>
      <name>mapred.job.tracker</name>
      <value>localhost:54311</value>
      <description>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.
      </description>
    </property>
    

    现在编辑hdfs-site.xml

    <property>
      <name>dfs.replication</name>
      <value>1</value>
      <description>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.
      </description>
    </property> 
    
  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 个月前完成,因此如果有任何部分无法正常工作,请告诉我。

Hadoop 使用 Juju(Hadoop 的 Juju Charm)

取自迷人的 Hadoop

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

  • 您有一个已设置 Juju 的服务器
  • 您可以访问服务器(本地或远程)
  • 您已配置 Juju 并准备开始添加 charms
  • 您正在使用 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。您还可以执行更多操作,请参阅提供的链接或官方适用于 Hadoop 的 Juju Charm

要了解最新的 JuJu Charms(设置、分步指南等),您可以访问:朱朱魅力并创建您自己的 JuJu 环境,查看每个文件的设置方式以及每个服务的连接方式。

答案2

JAVA_HOME我通过将路径设置为 成功安装了 Hadoop usr/lib/jvm/java-6-openjdk-amd64

答案3

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

简单来说

  1. 安装 Java
  2. 准备一个执行用户对于 Hadoophduser
  3. hduser从现在起切换到
  4. 允许hduser通过无密码的 ssh 进行远程访问
  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

准备一个执行用户对于 Hadoophduser

hduser在组中创建用户hadoop

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

授予hduser须藤特权

编辑 sudo

$ sudo visudo

在末尾添加此行

hduser ALL=(ALL:ALL) ALL

hduser从现在起切换到

$ su - hduser

允许hduser通过无密码的 ssh 进行远程访问

安装 openssh

$ sudo apt-get install openssh-server

为 SSH 连接生成 RSA 公钥/私钥;密码为空,如下所示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 包

从以下网址下载 Hadoop 2.5.1 软件包Apache Hadoop 站点

此包的直接 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

确保我们hduser在家中存储了 Hadoop

$ 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 

将 Hadoopbinary文件夹添加到系统$PATH

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

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

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

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

配置 Hadoop 的服务

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

  • 公共属性核心站点.xml

  • HDFS 属性hdfs-site.xml

  • MapReduce 属性进入mapred-站点.xml

在此处输入图片描述

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

再次定义 JAVA_HOME,hadoop-env.sh方法是编辑以下行

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

定义 Hadooptemp folderfile system命名核心站点.xml

<configuration>
  ...
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hduser/tmp</value>
    <description>A base for other temporary directories.</description>
  </property>

  <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:54310</value>
    <description>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.</description>
  </property>
  ...
</configuration>

我们需要temp folder按照以下配置进行准备/home/hduser/tmp

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

定义file systemblock replicationhdfs-site.xml

<configuration>
  ...
  <property>
    <name>dfs.replication</name>
    <value>1</value>
    <description>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.
    </description>
  </property>
  ...
</configuration>

定义map-reduce jobmapred-站点.xml

<configuration>
  ...
  <property>
    <name>mapred.job.tracker</name>
    <value>localhost:54311</value>
    <description>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.
    </description>
  </property>
  ...
</configuration>

格式name node

$ hdfs namenode -format

启动 Hadoop 服务

称呼

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

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

确保 Hadoop 服务已正确启动

$ jps

我们应该看到

在此处输入图片描述

答案4

有关最新教程(不确定是否有区别),请查看hadoop 截屏视频视频教程。他们提供视频和实际的安装命令。此外,如果您给作者发送电子邮件,他会非常乐意回复并帮助您解决任何问题。

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

相关内容