源自@Luis Alvarado的答案,这是我针对Ubuntu 14.04和Hadoop 2.5.1的版本
简单来说
- 安装Java
- 为Hadoop 准备执行用户
hduser
hduser
从现在开始切换到
- 允许
hduser
通过带有少密码短语的ssh进行远程控制
- 禁用IPv6
- 下载并配置Hadoop软件包
- 准备系统路径$ HADOOP_HOME和$ JAVA_HOME
- 配置Hadoop的服务
- 启动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
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表示可以^^
下载并配置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
家里
$ 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
,并确保您具有$ HADOOP_HOME及其可用命令
$ echo $HADOOP_HOME
$ which start-all.sh
$ which start-dfs.sh
$ which start-yarn.sh
我们应该看到这些名称的完整路径。
配置Hadoop的服务
Hadoop中的每个组件都使用XML文件进行配置。
这些文件都位于文件夹$ HADOOP_HOME / etc / hadoop中
hadoop-env.sh
通过编辑以下行再次定义JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
在core-site.xml中定义Hadoop temp folder
并file system
命名为
<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 system
的block replication
在HDFS-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 job
在mapred-site.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
我们应该看到