VMware15+ubuntu16.01+Hadoop2.9.1环境搭建

在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环境已经配置好了。

猜你喜欢

转载自blog.csdn.net/qq_40663357/article/details/83002141