初衷
首先说明一下既然网上有那么多教程为什么要还要写这样一个安装教程呢?网上教程虽然多,但是有些教程比较老,许多教程忽略许多安装过程中的细节,比如添加用户的权限,文件权限,小编在安装过程遇到许多这样的问题所以想写一篇完整的教程,希望对初学Hadoop的人有一个直观的了解,我们接触真集群的机会比较少,虚拟机是个不错的选择,可以基本完全模拟真实的情况,前提是你的电脑要配置相对较好不然跑起来都想死,废话不多说。
环境说明
本文使用VMware® Workstation 12 Pro虚拟机创建并安装三台Ubuntu16.04系统分别命名为master、slave1、slave2对应对应NameNode、DataNode、DataNode。
安装过程中要求三个系统中配置基本相同除个别配置(比如:节点的命名)
192.168.190.128 master
192.168.190.129 slave1
192.168.190.131 slave2
在虚拟机Linux上安装与配置Hadoop
需要说明的是下面的所有配置三台Ubuntu系统都要配置而且是基本一样,为了使配置一致,先在一台机器上配置然后将对应配置scp到其他机器上
虚拟机的安装不是本文重点,这里就不赘述了。安装之后是这样的:

在Linux上安装Hadoop之前,需要安装两个程序:
1)JDK1.6(或更高版本),本文采用JDK 1.7。Hadoop是Java编写的程序,Hadoop的编译及MapReduce都需要使用JDK。因此,在安装Hadoop前,必须安装JDK1.6或更高版本。
2)SSH(安装外壳协议),推荐安装OpenSSH.Hadoop需要通过SSH来启动Slave列表中各台机器的守护进程,因此SSH也是必须安装的,即使是安装伪分布版本(因为Hadoop并没有区分集群式和伪分布式)。对于伪分布式,Hadoop会采用与集群相同处理方式,即按次序启动文件conf/slaves中记载的主机上的进程,只不过在伪分布式中Slave为localhost(即本身),所以对于伪分布式Hadoop,SSH也是一样必须的。
部署步骤
添加一个hadoop用户,并赋予相应权利,我们接下来hadoop Hbase的安装都要在hadoop用户下操作,所以hadoop用户要将hadoop的文件权限以及文件所有者赋予给hadoop用户。
1.每个虚拟机系统上都添加 hadoop 用户,并添加到 sudoers
sudo adduser hadoop
sudo gedit /etc/sudoers
找到对应添加如下:
# User privilege specification root ALL=(ALL:ALL) ALL hadoop ALL=(ALL:ALL) ALL
2.切换到 hadoop 用户:
su hadoop
3.修改 /etc/hostname 主机名为 master
当然master虚拟机设置为master
其他两个虚拟机分别设置为slave1、slave2
4.、修改 /etc/hosts
127.0.0.1 localhost 127.0.1.1 localhost.localdomain localhost 192.168.190.128 master 192.168.190.129 slave1 192.168.190.131 slave2 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
5.安装JDK 1.7
(1)下载和安装JDK 1.7
jdk-7u76-linux-x64.tar.gz
使用tar命令
tar -zxvf jdk-7u76-linux-x64.tar.gz
将安装文件移动到JDK安装目录,本文JDK的安装目录为/usr/lib/jvm/jdk1.7.0_76
(2)配置环境变量
输入命令:
sudo gedit /etc/profile
输入密码,打开profile文件。在最下面输入如下内容:
#set java environment
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_76
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:/home/hadoop/hadoop-2.7.1/bin:/home/hadoop/hadoop-2.7.1/sbin:/home/hadoop/hbase-1.2.4/bin:$PATH
需要说明的是可能profile文件当前权限是只读的,需要使用
sudo chmod 777 /etc/profile
命令修改文件读写权限。文件中已经包含了Hadoop以及Hbase的环境配置。
这一步的意义是配置环境变量,使系统可以找到JDK。
(4)验证JDK是否安装成功
输入命令:
java -version
会出现如下JDK版本信息:
java version "1.7.0_76" Java(TM) SE Runtime Environment (build 1.7.0_76-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.76-b04, mixed mode)
如果出现上述JDK版本信息说明当前安装JDK并未设置成Ubuntu系统默认的JDK,接下来还需要手动将安装的JDK设置成系统默认的JDK。
(5)手动设置系统默认JDK
在终端依次输入命令:
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_76/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_76/bin/javac 300
sudo update-alternatives --config java
接下来输入java -version就可以看到所安装的JDK的版本信息了。
三台虚拟机都要安装Vmware Tools工具方便复制粘贴
6.配置SSH免密码登录
(1)确认已经连上互联网,然后输入命令:
sudo apt-get install ssh
(2)配置 master、slave1 和 slave2 节点可以通过 SSH 无密码互相访问
注意这里的所有操作都是在hadoop用户下操作的。
首先,查看下hadoop用户下是否存在.ssh文件夹(注意ssh文件前面有”.”这是一个隐藏文件夹),输入命令:
ls -a -l
可以得到
drwxr-xr-x 9 root root 4096 Feb 1 02:41 . drwxr-xr-x 4 root root 4096 Jan 27 01:50 .. drwx------ 3 root root 4096 Jan 31 03:35 .cache drwxr-xr-x 5 root root 4096 Jan 31 03:35 .config drwxrwxrwx 11 hadoop root 4096 Feb 1 00:18 hadoop-2.7.1 drwxrwxrwx 8 hadoop root 4096 Feb 1 02:47 hbase-1.2.4 drwxr-xr-x 3 root root 4096 Jan 31 03:35 .local drwxr-xr-x 2 root root 4096 Jan 31 14:47 software drwxr-xr-x 2 hadoop root 4096 Feb 1 00:01 .ssh
一般来说,安装SSH时会自动在当前用户下创建这个隐藏文件夹,如果没有,可以手动创建一个。
sudo mkdir .ssh
注意这里的.ssh要是hadoop权限拥有,如果是root的话,使用下面命令:
sudo chown -R hadoop .ssh
接下来,输入命令:
ssh-keygen -t rsa
如果没有权限前面加一个sudo.
执行完可以看到一个图标并在.ssh文件下创建两个文件:id_rsa和id_rsa.pub
cat ~/ssh/id_rsa.pub >> ~/ssh/authorized_keys
在Ubuntu中,~代表单前用户文件夹,此处即/home/hadoop。
这表命令的功能是把公钥加到用于认证的公钥文件中,这里的authorized_keys是用于认证的公钥文件。
然后使用命令:
sudo gedit authorized_keys
打开对应虚拟机生成的密码,如master主机的hadoop用户生成了hadoop@master,将其他主机生成的秘钥添加到master主机的authorized_keys文件的末尾,这样master主机就拥有slave1的hadoop用户以及slave2的hadoop用户的秘钥了。
如下:
不要复制我的,复制我的没用,我这里只是实例一下,复制你自己的三台虚拟机各自生成的秘钥
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC743oCP2Voa3deHBkA+N7cYJC4Jv2Tj8Z6tGVWCxg0NJl3yKwYIfgC9RiyFyRWcl5byI34Oe7dYtf+9UtvH85hca1/IDP1m02NLPXsIJmcPS4uNgMLfsWg/F/C3Bqut7i4t6eHwO/FRhjeIBu5O/9GHoXk/ykhgJIbyh8hhAlcke6Jtt80I63r2+3DnlHlNzw1sQRJp2qFRgyV61j5DfuYrhfd+/eTkFtXc7izLVCkC7x6hMo4qIMQ0GbSx9iqTO0tO1skGYLhCX3Cbo3hf4i19RUKt168eg/X2l1qIvf+vgxQudM3lZa9/pxDieK5p8c8xupcaoR67jMFLWLl3EUb hadoop@master ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQ1Jf6ds9Y+KlQNIHq+pDGxM1OsF+RSXcgLDdlzw+qGK7NT28bRK6QUCm3kJqa/ekEkqDHdWegtiQVriOsY4A2fABkRsjiOrnc4QYQ/rqB06JuvshwToB91qwmV/J/o3mgsentJLfmBUpSyW8rRxQV+tYtqQ+gipL7x0WGUBRQYRhJJZKAxqgLGE3Md/siYjn8Ge4G31rrTcx9QDVcfTCtHkvqca0b0f98Y+U9Fu6w4Ari28oLxFTlzuCsebIPMzE4uWQuXT+2kMz0HunpejSDrLkrFqO1OKUs0peZrUVRmYBY5flt4tnV0XOQBYClzxieev/ppgH8AeB4Qs/zXB25 hadoop@slave1 ssh-rsa AAAAB3NzaC1yc2EAAAA
您可能想查找下面的文章:
- myeclipse中建web项目上传文件到hadoop,出现文件上传上去了,但是文件大小为0或小于当前文件解决方案,
- 为什么出现Hadoop,出现Hadoop
- 虚拟机下Linux系统Hadoop单机/伪分布式配置:Hadoop2.5.2+Ubuntu14.04(半原创),hadoophadoop2.5.2
- 深入讲解Hadoop管道,讲解hadoop管道
- Hadoop安全性,hadoop安全机制
- Hadoop Streaming 获取mapreduce_map_input_file遇到的版本问题,hadoopmapreduce
- 【甘道夫】Apache Hadoop 2.5.0-cdh5.2.0 HDFS Quotas 配额控制,hadoophdfs
- Hadoop 2.x与3.x 22点比较,Hadoop 3.x比2.x的改进
- ubuntu docker搭建Hadoop集群环境的方法
- hadoop动态增加和删除节点方法介绍

