安装Hadoop并不困难,官方文档也给的还算详细。最近同事练习安装还是会遇到一些问题,最后我们整理出来傻瓜版安装手册,帮助你0基础成功。北京数据平台荣誉出品    特别感谢靳伟,暮霜同学帮忙整理出来这么傻瓜版的hadoop安装教程。


一、 Hadoop准备篇:

Hadoop运行软件环境:

1. SSH及 SSHD服务正常运行2. JDK

如果没装,可以自己安装一下:

Sudo yum –y install jdk –b current

二、 Hadoop基础篇(安装完成单节点Hadoop)1. 源代码下载

1.1 下载Hadoop 源码压缩包至服务器

wget http://mirror.bjtu.edu.cn/apache/hadoop/core/hadoop-0.20.2/hadoop-0.20.2.tar.gz

1.2 解压源码压缩包 tar HadoopInstall

Tar –zvxf hadoop-0.20.2.tar.gz –C HadoopInstall

HadoopInstall即为Hadoop安装目录

2. 环境变量配置 : (hadoop_env.sh )

目录/home/YOURDictionary/HadoopInstall/ hadoop-0.20.2 /conf

2.1 JAVA_HOME:必选变量。

设置export JAVA_HOME=/usr/java/jdk1.6.0 jdk路径

2.2 HADOOP_HOME:可选变量

HADOOP_HOME默认的是bin目录的父目录,即/home/usr/HadoopInstall/ hadoop-0.20.2。

设置export HADOOP_HOME=/home/usr/HadoopInstall/ hadoop-0.20.2

3. 环境配置文件配置

主要有三个配置文件:core-site.xml, hdfs-site.xml, mapred-site.xml

3.1 conf/core-site.xml


<configuration>


  <property>


   <name>fs.default.name</name> —-文件系统的默认名称


    <value>hdfs://(master ip):9000</value>


  </property>


</configuration>

同理配置其他参数:

a. Hadoop运行的临时目录

hadoop.tmp.dir=/home/ads/data(自己设定自己虚拟机上的文件夹路径)

3.2 conf/hdfs-site.xml:


<configuration>


  <property>


    <name>dfs.replication</name>


    <value>1</value>


  </property>


</configuration>
同理配置其他参数:

a. DFS的数据保存目录:dfs.data.dir=/home/data,/home1/data(自己设定自己虚拟机上的文件夹路径

b. DFS Namenode保存的位置:dfs.name.dir=${hadoop.tmp.dir}/dfs/name,/home/ads/data1/dfs/name(自己设定自己虚拟机上的文件夹路径)

3.3 conf/mapred-site.xml:


<configuration>


  <property>


    <name>mapred.job.tracker</name> — Jobtracker的位置


    <value>(master ip):9001</value>


  </property>


</configuration>
同理配置其他参数:
a. 单节点同时运行的最大map数:mapred.tasktracker.map.tasks.maximum=8
b. 单节点同时运行的最大reduce数:mapred.tasktracker.reduce.tasks.maximum=6

4 主机自身打通 (ssh-keygen 命令详解见下节进阶篇)

$ ssh-keygen -t rsa -P ” -f ~/.ssh/id_ rsa
$ cat ~/.ssh/id_ rsa.pub >> ~/.ssh/authorized_keys

5 启动

进入~/HadoopInstall/ hadoop-0.20.2目录

5.1 格式化namenode

执行下面的命令[usr@servername: hadoop-0.20.2]$bin/hadoop namenode –format

5.2 简单启动所有守护

[usr@servername: hadoop-0.20.2]$ bin/start-all.sh

高级启动参见:Hadoop高级篇(Link)

5.3 停止守护

[usr@servername: hadoop-0.20.2]$bin/stop-all.sh

6 验证测试

启动成功后,可浏览器查看以下地址:

6.1 Job tracker

http://master名称:50030,能查看此页面,页面状态(Stated)显式为RUNNing(页面左上角)。

6.2 NameNode

http://master名称:50070,能看到Live Datanodes。

三、 Hadoop进阶篇(安装多节点hadoop):3.1 集群SSH设置,集群打通(注意是双向哦)

例如集群存在三台机器,servername-1为主机。

3.1.1 在servername-1上生成密钥对:
[usr@servername-1:~]$ssh-keygen -t rsa

询问保存路径时直接回车采用默认路径

提示要为生成的密钥输入passphrase的时,直接回车,将其设定为空密码

生成的密钥对id_rsa,id_rsa.pub,默认存储在/home/usr/.ssh目录下。

3.1.2 id_rsa.pub的内容复制到每个机器(也包括本机)

id_rsa.pub的内容复制到每个机器(也包括本机)的/home/usr/.ssh/authorized_keys文件中。

如果机器上已经有 authorized_keys文件,就在文件末尾加上id_rsa.pub中的内容。

如果没有authorized_keys这个文件,直接cp 或者scp就好了,下面的操作假设各个机器上都没有authorized_keys文件。

i. 对于servername-1

[usr@servername-1:.ssh]$cp id_rsa.pub authorized_keys

ii. 对于servername-2(servername-3同servername-2的方法)

[usr @ servername-2:~]$mkdir .ssh

[usr @ servername-1:.ssh]$scp authorized_keys servername-2:/home/ servername /.ssh/

iii. 设置authorized_keys文件读写权限

[dbrg@ servername-2:.ssh]$chmod 644 authorized_keys必须保证authorized_keys只对其所有者有读写权限,其他人不允许有写的权限,否则SSH是不会工作的。

iv. 验证测试

i. 注意每个机器上的.ssh目录的ls -la都应该和上面是一样的

[usr @ servername-2:.ssh]ls -la
drwx—— 2 usr users.
drwx—— 3 usr users..
-rw-r–r– 1 usr users authorized_keys

ii. 测试本机ssh servername-1

iii. [usr @ servername-1:~]$ssh servername-2

如果ssh配置好了,就会出现以下提示信息
The authenticity of host [servername-2] can’t be established.
Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.
Are you sure you want to continue connecting (yes/no)?
OpenSSH告诉你它不知道这台主机,但是你不用担心这个问题,因为你是第一次登录这台主机。键入“yes”。这将把这台主机的“识别标记”加到“~/.ssh/know_hosts”文件中。第二次访问这台主机的时候就不会再显示这条提示信息了。
然后你会发现不需要输入密码就可以建立ssh连接了,恭喜你,配置成功了

3.2 Master主机配置(同上一节)3.3 Masters/Slave文件配置

3.3.1 Masters

在master主机上的hadoop-0.20.2 /conf/目录下,打开master 文件,把master 主机名添加进去:,本文以servername-1做为master,所以在master文件内容是:

servername-1

3.3.2 Slaves

在master主机上的hadoop-0.20.2 /conf/目录下,打开slaves文件,该文件用来指定所有的从节点,一行指定一个主机名。即本文中的servername-2,servername-3,因此slaves文件看起来应该是这样的
servername-2
servername-3

3.4 部署Hadoop集群 (必须放在最后一步哦 )

前面讲的这么多Hadoop的环境变量和配置文件都是在dbrg-1这台master主机上的, 将上述配置好的hadoop分发至各个slave的相同位置,注意要保证目录结构一致,

[usr@ servername-1:~]$scp -r /home/ YOURDictionary /HadoopInstall servername-2:/home/YOURDictionary / HadoopInstall
[usr@ servername-1:~]$scp -r /home/ YOURDictionary /HadoopInstall servername-3:/home/YOURDictionary / HadoopInstall

3.5 启动

同hadoop 基础篇启动

3.6 验证测试

同hadoop 基础篇 验证测试

09-25 11:58