安装 Hadoop2 之前,需要先安装两个程序,那就是 JDK 和 SSH。
1. 安装 JDK1.6 或更高版本。
因为 Hadoop 是 Java 编写的,它的编译以及 MapReduce 的运行,都需要 JDK。
这里安装 JDK1.7,原因是太新的 JDK 不是很稳定,而 Hadoop 在升级的过程中不再支持低版本的 JDK,那么太老版本也最好别用,否则就会有很多预料不到的问题出现。
安装 JDK 的详细步骤网上一搜一大堆,这里就不再详述,给出两篇文章供参考:《Linux系统搭建Web服务器》和《在Ubuntu14.04上安装JDK》,在这里安装 jdk-7u79-linux-x64.tar.gz。
2. 安装 OpenSSH。
因为Hadoop 通过 SSH 启动 Slave 列表中各台主机的进程。不管是集群式还是伪分布式,它都会按次序启动 conf/slaves 文件中的主机进程,与集群的处理方式相同。
配置 SSH 免密码登陆:
1)查看用户目录下是否有 .ssh 隐藏文件夹,如果没有,手动创建一个。
~$ mkdir .ssh
2)输入以下命令,生成密钥文件。
~$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
其中,ssh-keygen 代表生成密钥,-t dsa 表示生成的密钥类型为 dsa,-P 用于提示密语,-f 指定生成的密钥文件。
结果:
Generating public/private dsa key pair.
Your identification has been saved in /home/menglanglang/.ssh/id_dsa.
Your public key has been saved in /home/menglanglang/.ssh/id_dsa.pub.
The key fingerprint is:。。。。。。
如果看到以上结果,则说明密钥生成成功。以上命令会在 .ssh 文件夹下创建生成一对 id_dsa(私钥) 和 id_dsa.pub(公钥)。
3)把公钥追加到授权的 key 中去,即把公钥加到用于认证的公钥文件 authorized_keys 中,到输入以下命令:
~$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
验证 SSH 免密码登陆:
~$ ssh -version
结果:Bad escape character 'rsion'.
~$ ssh localhost
结果:
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is 。。。。。。
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-21-generic x86_64)* Documentation: https://help.ubuntu.com/0 packages can be updated.
0 updates are security updates.Last login: Mon Aug 22 09:31:37 2016 from 192.168.88.101
至此,SSH 安装并配置成功了。
3. 安装 Hadoop。
下载 Hadoop 的官方发行版本,这里下载 hadoop-2.6.4.tar.gz,并将其解压到 /home/用户目录下。
配置 Hadoop:
单机模式的 Hadoop 不需要配置,默认 Hadoop 是一个单独的 Java 进程,该模式经常用来调试。
伪分布式的 Hadoop 配置,在该模式下,可以看作只有一个节点的集群,既是 Master,又是Slave,既是 NameNode,也是 DataNode,既是 JobTracker,亦是 TaskTracker。
1)进入 Hadoop 配置文件夹。
$ cd hadoop-2.6.4/etc/hadoop/
2)配置 JDK 路径:
$ vi hadoop-env.sh
找到下面代码部分:
# The java implementation to use.export JAVA_HOME=${JAVA_HOME}
在这里直接修改为 JDK 路径,如下:
export JAVA_HOMEl=/usr/local/java
路径根据自己 JDK 的实际安装路径配置即可,上面第一步是安装到了 /usr/local 下。
3)修改 Hadoop 的核心配置文件 core-site.xml,配置 HDFS 的地址及端口号。
$ vi core-site.xml
配置:
- <configuration>
- <property>
- <name>fs.default.name</name>
- <value>hdfs://localhost:9000</value>
- </property>
- </configuration>
4)修改 Hadoop 的核心配置文件 hdfs-site.xml,配置备份方式默认为 3,单机版则需改为 1。
$ vi hdfs-site.xml
配置:
- <configuration>
- <property>
- <name>dfs.replication</name>
- <value>3</value>
- </property>
- </configuration>
5)修改 Hadoop 的核心配置文件 mapred-site.xml,配置 MapReduce 中 JobTracker 的地址及端口。但配置文件中没有该文件,有一个 mapred-site.xml.template 文件,所以拷贝一份,命名为 mapred-site.xml 并配置。
$ cp mapred-site.xml.template mapred-site.xml$ vi mapred-site.xml
配置:
- <configuration>
- <property>
- <name>mapred.job.tracker</name>
- <value>localhost:9001</value>
- </property>
- </configuration>
4. 启动 Hadoop。
1)启动前,需要格式化文件系统 HDFS,进入 Hadoop 根目录。
$ bin/hadoop namenode -format
注意:不要把 namenode 写成 namenodes 或者是 NameNode 等,不然会报如下错误:
Error: Could not find or load main class NameNode
结果:
- DEPRECATED: Use of this script to execute hdfs command is deprecated.
- Instead use the hdfs command for it.
- 16/08/22 12:09:38 INFO namenode.NameNode: STARTUP_MSG:
- /************************************************************
- STARTUP_MSG: Starting NameNode
- STARTUP_MSG: host = ubuntuserver.workgroup/192.168.88.110
- STARTUP_MSG: args = [-format]
- STARTUP_MSG: version = 2.6.4
- 。。。。。。
- 16/08/22 12:09:47 INFO common.Storage: Storage directory /tmp/hadoop-menglanglang/dfs/name has been successfully formatted.
- 16/08/22 12:09:47 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
- 16/08/22 12:09:47 INFO util.ExitUtil: Exiting with status 0
- 16/08/22 12:09:47 INFO namenode.NameNode: SHUTDOWN_MSG:
- /************************************************************
- SHUTDOWN_MSG: Shutting down NameNode at ubuntuserver.workgroup/192.168.88.110
- ************************************************************/
下面的命令启动所有进程。
$ sbin/start-all.sh
结果:
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [localhost]。。。。。。
可以看到新版本的 Hadoop 已经废弃了原来的命令,建议使用新命令分别启动。
用下列命令测试是否启动成功。
$ jps
结果:
13559 Jps
13168 NodeManager
13056 ResourceManager
12207 NameNode
12319 DataNode
12497 SecondaryNameNode
看到如上结果,则说明 Hadoop 启动成功了。
至此,Hadoop 的安装,配置以及启动则全部完成了。
Good Luck!
本文参考《Hadoop实战 第2版》第 2 章 2.1 节安装配置,转载请注明。