我正在尝试在 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_home在 Hadoop 中conf/env.sh。格式化namenode时,出现以下错误:
usr/lib/jvm/java-6-openjdk/bin/java no such file or directory.
Run Code Online (Sandbox Code Playgroud)
谢谢你。但它是一个 64 位操作系统。
Lui*_*ado 40
我在 12.04 时遵循的指南是:
我实际上是反对 MyLearning 的,因为它推荐的第一件事是 Oracle Java 7 而不是 OpenJDK 7,但是我在尝试使用 OpenJDK 7 时遇到了一些问题,所以我不得不选择 Oracle。
该指南主要是直截了当的,这里是:
安装 Java
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install oracle-java7-installer
Run Code Online (Sandbox Code Playgroud)创建 Hadoop 用户
sudo addgroup hadoop
sudo adduser --ingroup hadoop hduser
Run Code Online (Sandbox Code Playgroud)
其中 hduser 是您想要拥有的 Hadoop 用户。
配置 SSH
su - hduser
ssh-keygen -t rsa -P ""
cat .ssh/id_rsa.pub >> .ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
为确保 SSH 安装顺利,您可以打开一个新终端并尝试使用hduser以下命令创建 ssh 会话:
ssh localhost
Run Code Online (Sandbox Code Playgroud)
如果 localhost 未连接,请重新安装 ssh(您可能需要hduser按以下步骤添加到 sudo)
sudo apt-get install openssh-server
Run Code Online (Sandbox Code Playgroud)编辑 Sudoers
sudo visudo
Run Code Online (Sandbox Code Playgroud)在末尾添加将 hduser 添加到 sudoers 的行
hduser ALL=(ALL:ALL) ALL
Run Code Online (Sandbox Code Playgroud)
要保存按CTRL+ X,键入Y并按ENTER
禁用 IPv6
sudo gedit /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)
或者
sudo nano /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)
复制文件末尾的以下几行:
#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
Run Code Online (Sandbox Code Playgroud)
如果您遇到问题告诉您,您没有权限,只需使用 root 帐户运行前面的命令(以防 sudo 不够用。对我来说是)
现在重新启动。
你也可以,sudo sysctl -p但我宁愿重新启动。
重新启动后,检查以确保 IPv6 已关闭:
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
Run Code Online (Sandbox Code Playgroud)
它应该说1。如果它说0,你错过了一些东西。
安装 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
Run Code Online (Sandbox Code Playgroud)
注意:PPA 可能对某些人有效,而对其他人则无效。我尝试的是从官方网站下载,因为我不知道 PPA。
更新 $HOME/.bashrc
您将需要更新.bashrcfor hduser(以及您需要管理 Hadoop 的每个用户)。要打开.bashrc文件,您需要以 root 身份打开它:
sudo gedit /home/hduser/.bashrc
Run Code Online (Sandbox Code Playgroud)
或者
sudo nano /home/hduser/.bashrc
Run Code Online (Sandbox Code Playgroud)
然后你将在.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
Run Code Online (Sandbox Code Playgroud)
现在,如果你有 OpenJDK7,它看起来像这样:
export JAVA_HOME=/usr/lib/java-7-openjdk-amd64
Run Code Online (Sandbox Code Playgroud)
这里需要注意的是 Java 与 AMD64 版本所在的文件夹。如果上述方法不起作用,您可以尝试查看该特定文件夹或设置将用于的 Java:
sudo update-alternatives --config java
Run Code Online (Sandbox Code Playgroud)
现在提供一些有用的别名:
# 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
Run Code Online (Sandbox Code Playgroud)配置 Hadoop
以下是我们可以用来进行正确配置的配置文件。您将与 Hadoop 一起使用的一些文件是(本站点中的更多信息):
start-dfs.sh- 启动 Hadoop DFS 守护进程、namenode 和 datanode。在 start-mapred.sh 之前使用它
stop-dfs.sh - 停止 Hadoop DFS 守护进程。
start-mapred.sh - 启动 Hadoop Map/Reduce 守护进程、jobtracker 和 tasktracker。
stop-mapred.sh - 停止 Hadoop Map/Reduce 守护进程。
start-all.sh- 启动所有 Hadoop 守护进程、名称节点、数据节点、作业跟踪器和任务跟踪器。已弃用;使用 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
Run Code Online (Sandbox Code Playgroud)
或者
sudo nano /home/hduser/hadoop/conf/hadoop-env.sh
Run Code Online (Sandbox Code Playgroud)
或在最新版本中
sudo nano /etc/hadoop/conf.empty/hadoop-env.sh
Run Code Online (Sandbox Code Playgroud)
或者
sudo nano /etc/hadoop/hadoop-env.sh
Run Code Online (Sandbox Code Playgroud)
然后更改以下行:
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun
Run Code Online (Sandbox Code Playgroud)
到
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
Run Code Online (Sandbox Code Playgroud)
注意:如果您Error: JAVA_HOME is not set在启动服务时遇到错误,您忘记取消对前一行的注释(只需删除 #)。
核心站点.xml
现在我们需要为 Hadoop 框架创建一个临时目录。如果你需要这个环境进行测试或者快速原型(比如为你的个人测试开发简单的hadoop程序......),我建议在/home/hduser/目录下创建这个文件夹,否则你应该在共享文件夹下的共享位置创建这个文件夹(像 /usr/local ...) 但你可能会面临一些安全问题。但是为了克服可能由安全引起的异常(如java.io.IOException),我在hduser空间下创建了tmp文件夹。
要创建此文件夹,请键入以下命令:
sudo mkdir /home/hduser/tmp
Run Code Online (Sandbox Code Playgroud)
请注意,如果您想创建另一个管理员用户(例如 hadoop 组中的 hduser2),您应该使用以下命令授予他对该文件夹的读写权限:
sudo chown hduser:hadoop /home/hduser/tmp
sudo chmod 755 /home/hduser/tmp
Run Code Online (Sandbox Code Playgroud)
现在,我们可以打开hadoop/conf/core-site.xml编辑 hadoop.tmp.dir 条目。我们可以使用文本编辑器打开 core-site.xml:
sudo gedit /home/hduser/etc/hadoop/core-site.xml
Run Code Online (Sandbox Code Playgroud)
或者
nano /home/hduser/etc/hadoop/core-site.xml
Run Code Online (Sandbox Code Playgroud)
然后在<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>
Run Code Online (Sandbox Code Playgroud)
现在编辑 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>
Run Code Online (Sandbox Code Playgroud)
现在编辑 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>
Run Code Online (Sandbox Code Playgroud)格式化 NameNode
现在您可以开始在 Node.js 上工作了。第一种格式:
~/hduser/hadoop/bin/hadoop namenode -format
Run Code Online (Sandbox Code Playgroud)
或者
./home/hduser/hadoop/bin/hadoop namenode -format
Run Code Online (Sandbox Code Playgroud)
您应该在 HDFS 中格式化 NameNode。系统运行时不应执行此步骤。通常在第一次安装时完成一次。
启动 Hadoop 集群
您需要导航到 hadoop/bin 目录并运行./start-all.sh脚本。
cd ~/hduser/hadoop/bin/
start-all.sh
Run Code Online (Sandbox Code Playgroud)
如果您的版本与指南中显示的版本不同(如果使用 PPA 或更新版本执行此操作,您很可能会拥有该版本),请尝试以下方式:
cd ~/hduser/hadoop/bin/
start-dfs.sh
start-mapred.sh
Run Code Online (Sandbox Code Playgroud)
这将在您的机器上启动 Namenode、Datanode、Jobtracker 和 Tasktracker。
检查 Hadoop 是否正在运行
有一个很好的工具叫做jps. 您可以使用它来确保所有服务都已启动。在您的 hadoop bin 文件夹中输入:
jps
Run Code Online (Sandbox Code Playgroud)
它应该向您展示所有与 Hadoop 相关的进程。
注意:由于这是在大约 6 个月前为我完成的,如果有任何部分不起作用,请告诉我。
我假设已经设置了以下内容:
~/.juju/environments.yaml了有关您将使用的服务器的信息,包括 PPA 来源。好的,现在按照以下步骤运行 Hadoop 服务:
为 Hadoop 启动环境
juju bootstrap
Run Code Online (Sandbox Code Playgroud)
等到它完成然后检查它是否连接正确:
juju status
Run Code Online (Sandbox Code Playgroud)部署 Hadoop(主从)
juju deploy --constraints="instance-type=m1.large" hadoop hadoop-master
juju deploy --constraints="instance-type=m1.medium" -n 5 hadoop hadoop-slave
Run Code Online (Sandbox Code Playgroud)创建关系
juju add-relation hadoop-master:namenode hadoop-slave:datanode
juju add-relation hadoop-master:jobtracker hadoop-slave:tasktracker
Run Code Online (Sandbox Code Playgroud)公开 Hadoop(因为您已经部署并创建了服务应该运行的关系)
juju expose hadoop-master
Run Code Online (Sandbox Code Playgroud)
并检查状态以查看它是否正常工作:
juju status hadoop-master
Run Code Online (Sandbox Code Playgroud)到目前为止,您已经拥有一个正在运行的 Hadoop。您可以在提供的链接或官方的Juju Charm for Hadoop 中找到更多可以做的事情
有关最新的 JuJu Charms(设置、分步指南等),您可以访问:JuJu Charms并制作您自己的 JuJu 环境并查看每个文件的设置方式以及每个服务的连接方式。
| 归档时间: |
|
| 查看次数: |
74126 次 |
| 最近记录: |