在VM上用三台ubuntu搭建Hadoop环境
本人由于学习大数据需要搭建Hadoop环境,由于技术比较菜,所以折腾了一个星期才搭好环境,
另外网上的很多教程都比较老,那些Hadoop版本很多都是零版的。
所以我想写一篇完整详细的教程来让初学者尽快的搭好环境,进入大数据的学习。
所需环境:
VMware15 workstation pro
ubuntu16.01
Hadoop2.9.1
JDK1.8 和SSH
步骤
1、去官网下载VMware并安装
下载地址:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
激活密匙:YG5H2-ANZ0H-M8ERY-TXZZZ-YKRV8
2、在ubuntu官网下载ubuntu16.01,并在VMware15上安装。
或者网盘链接:https://pan.baidu.com/s/1dBSgw1SoNRPQGQR2rHTNUA 提取码:oftx
安装步骤我就不赘述了,这个应该比较简单。
3、在Linux上安装hadoop之前,需要安装两个程序:
1)JDK1.6(或更高版本),本文采用JDK 1.8。Hadoop是Java编写的程序,Hadoop的编译及MapReduce都需要使用JDK。
因此,在安装Hadoop前,必须安装JDK1.6或更高版本。
①下载和安装JDK 1.8
官网地址;https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
下载版本:jdk-8u181-linux-x64.tar.gz
解压:
tar -zxvf jdk-8u181-linux-x64.tar.gz(根据具体安装路径而定)
将解压后的文件移动到/usr/local/java目录(根据自己情况而定)
mv jdk-8u181-linux-x64.tar.gz /usr/local/java
②环境配置:
sudo vim /etc/profile
如果没有vim,则输入以下命令安装
apt-get install vim
安装完成后,输入vim会进入vim的标准模式,这时按键盘的 i 进入插入模式
按Esc退出插入模式,进入标准模式,在这个模式下有几个基本命令要掌握。
:wq 保存并退出
i 进入插入模式
x 删除当前光标的字符
dd 删除当前行,并且保存当前行到剪切板
p 粘贴
:help <command> 查看命令的帮助
上下左右移动光标
在文件的最后添加如下配置:
JAVA_HOME=/usr/local/java/jdk1.8.0_181
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH
配置环境变量的意义是为了可以在系统的任意位置使用jdk
告诉Ubuntu Java JDK的位置:
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_181/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_181/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_181/bin/javaws" 1
将其设为默认方式:
sudo update-alternatives --set java /usr/local/java/jdk1.8.0_181/bin/java
sudo update-alternatives --set javac /usr/local/java/jdk1.8.0_181/bin/javac
sudo update-alternatives --set javaws /usr/local/java/jdk1.8.0_181/bin/javaws
重新加载环境变量的配置文件:
source /etc/profile
③验证JDK是否安装成功
输入命令:
java -version
会出现如下JDK版本信息
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
如果出现以上信息,说明你的jdk已经配置好了(如果没有,说明哪一步出了问题,
请重新安装配置)
2)SSH(安装外壳协议),推荐安装OpenSSH.Hadoop需要通过SSH来启动Slave列表中各台机器的守护进程
,因此SSH也是必须安装的,即使是安装伪分布版本(因为Hadoop并没有区分集群式和伪分布式)。
对于伪分布式,Hadoop会采用与集群相同处理方式,即按次序启动文件conf/slaves中记载的主机上的进程,
只不过在伪分布式中Slave为localhost(即本身),所以对于伪分布式Hadoop,SSH也是一样必须的。
确认已经连上互联网,然后输入命令
sudo apt-get install ssh
4、准备三台ubuntu搭建局域网
先把虚拟机关机,然后右键->管理->克隆,克隆两个完整的虚拟机,分别命名为slave1,slave2.
添加一个hadoop用户,并赋予相应权利,我们接下来步骤都要在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)输入以下命令修改主机名:
master虚拟机设置为master,其他两个虚拟机分别设置为slave1、slave2
sudo vim /etc/hostname 主机名
4)修改ip地址
sudo vim /etc/hosts
三台虚拟机都修改配置如下:
127.0.0.1 localhost
127.0.1.1 localhost.localdomain localhost
192.168.232.128 master
192.168.232.129 slave1
192.168.232.130 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
对于很多在校大学生,可能用的都是校园宽带,这里有个坑,就是虚拟机无法使用桥接模式,
这里只能选择nat模式。但是nat模式想要搭建一个虚拟机局域网(也就是使得我们的三台虚拟机之间
可以互ping),需要自己手动设置IP地址,请看我的另一篇博客,
有详细步骤:https://blog.csdn.net/qq_40663357/article/details/82961166
试一下三台虚拟机之间能不能相互ping通,如果可以的话,就可以开始配置ssh免密登录了。
5、配置SSH免密码登录
1)配置 master、slave1 和 slave2 节点可以通过 SSH 无密码互相访问
这里的所有操作都是在hadoop用户下操作的。
永久关闭防火墙(root用户)
chkconfig iptables off
验证ssh是否安装成功
ssh -V
出现以下,说明安装成功
OpenSSH_7.2p2 Ubuntu-4ubuntu2.4, OpenSSL 1.0.2g 1 Mar 2016
创建一个.ssh文件
sudo mkdir .ssh
再改一下.ssh的文件权限拥有者
sudo chown -R hadoop .ssh
输入以下命令,生成ssh公匙
#遇到提示回车即可,最后显示图形为公匙的指纹加密
ssh-keygen -t rsa
把公钥加到用于认证的公钥文件中,这里的authorized_keys是用于认证的公钥文件。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
#将公匙发至从节点的slave1、slave2用户
[hadoop@master ~]$ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@master
[hadoop@master ~]$ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@slave1
[hadoop@master ~]$ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@slave2
注意:对于完全分布来说,只在主节点配置SSH无密码链接即可,之后把公匙发至从节点
2)验证ssh免密登录配置是否成功
[hadoop@master ~]$ssh slave1
#如果没有出现输入密码提示则表示安装成功,执行这条命令后会远程登录从节点,返回主节点需执行exit
Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 4.15.0-36-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
38 packages can be updated.
0 updates are security updates.
Last login: Sat Oct 6 18:05:28 2018 from 192.168.232.128
6、安装配置Hadoop
1)官网下载Hadoop2.9.1
或者网盘链接:https://pan.baidu.com/s/1ncW9uk9OU69kkBseRmB3Jw 提取码:i3el
#所有操作都是在hadoop用户下
解压
tar -zxvf hadoop-2.9.1.tar.gz
移动文件到/home/master/hadoop
mv hadoop-2.9.1.tar.gz /home/master/hadoop
修改权限
sudo chown -R hadoop ./hadoop
2)配置 hadoop 的环境变量
vim /etc/bash.bashrc
在文件最后加上如下配置:
export JAVA_HOME=/usr/local/java/jdk1.8.0_181
export JRE_HOME=${JAVA_HOME}/jre
export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
执行source命令:
source /etc/bash.bashrc
在任意位置试一下hadoop
hadoop version
出现以下信息,说明配置成功
Hadoop 2.9.1
Subversion https://github.com/apache/hadoop.git -r e30710aea4e6e55e69372929106cf119af06fd0e
Compiled by root on 2018-04-16T09:33Z
Compiled with protoc 2.5.0
From source with checksum 7d6d2b655115c6cc336d662cc2b919bd
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-2.9.1.jar
3)配置Hadoop文件
cd /home/master/hadoop-2.9.1/etc/hadoop
conf/Hadoop-env.sh 配置更改如下:
# The java implementation to use.
export JAVA_HOME=/usr/local/java/jdk1.8.0_181
export HADOOP_HOME=/home/master/hadoop-2.9.1
export PATH=$PATH:/home/master/hadoop-2.9.1/bin
conf/core-site.xml 配置更改如下:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp</value>
</property>
</configuration>
conf/hdfs-site.xml 配置更改如下:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
conf/mapred-site.xml 配置更改如下:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
</configuration>
slaves 更改如下:
slave1
slave2
增加一个master文件,内容为master
sudo gedit master
4)向 slave1 和 slave2 节点复制 hadoop2.7.1 整个目录至相同的位置
进入hadoop@master节点hadoop目录下使用
scp -r hadoop-2.9.1 hadoop@slave1:~/
scp -r hadoop-2.9.1 hadoop@slave2:~/
5)启动Hadoop
hadoop@master:~$ hadoop namenode -format
结尾显示如下则初始格式化系统成功
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master/192.168.190.128
************************************************************/
注意启动Hadoop是在主节点上执行命令,其他节点不需要,主节点会自动按照文件配置启动从节点
hadoop@master:~$ start-all.sh
执行结果如下则成功
hadoop@master:~$ start-all.sh
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [master]
master: starting namenode, logging to /home/hadoop/hadoop-2.7.1/logs/hadoop-hadoop-namenode-master.out
slave1: starting datanode, logging to /home/hadoop/hadoop-2.7.1/logs/hadoop-hadoop-datanode-slave1.out
slave2: starting datanode, logging to /home/hadoop/hadoop-2.7.1/logs/hadoop-hadoop-datanode-slave2.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /home/hadoop/hadoop-2.7.1/logs/hadoop-hadoop-secondarynamenode-master.out
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop-2.7.1/logs/yarn-hadoop-resourcemanager-master.out
slave1: starting nodemanager, logging to /home/hadoop/hadoop-2.7.1/logs/yarn-hadoop-nodemanager-slave1.out
slave2: starting nodemanager, logging to /home/hadoop/hadoop-2.7.1/logs/yarn-hadoop-nodemanager-slave2.out
可以通过jps命令查看各个节点运行的进程查看运行是否成功。
master节点:
6018 Jps
5748 ResourceManager
5049 NameNode
5242 SecondaryNameNode
salve1节点:
3444 NodeManager
3621 Jps
3242 DataNode
slave2节点:
3282 NodeManager
2853 DataNode
3517 Jps
输入以下命令查看集群状态
Hadoop dfsadmin -report
Hadoop环境已经配置好了。