hadoop 完全分布式环境搭建

环境

Ubuntu 16.04 64位
hadoop 2.6.5
3台机:
master 192.168.1.106
slave1 192.168.1.107
slave2 192.168.1.108

1、搭建虚拟机

首先安装 VMware Workstation
接着安装Ubuntu 16.04 (百度上很多教程,此处略过)。

2、安装JDK

在oracle 官网下载最新版的安装包 (jdk-8u144-linux-x64.tar.gz);
解压到 /usr/local/ 目录下;
~/.bashrc 文件后面加上以下配置信息:

JAVA_HOME=/usr/local/jdk1.8.0_144
JRE_HOME=${JAVA_HOME}/jre
CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:${JAVA_HOME}/lib
PATH=${JAVA_HOME}/bin:${PATH}
export JAVA_HOME JRE_HOME PATH CLASSPATH

source ~/.bashrc 运行此命令,使配置立即生效。
运行 java -version 查看一下:

hadoop@long-virtual-machine:~$ java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

出现这些信息,说明JDK安装成功。

3、配置ssh

运行以下命令产生密钥:

ssh-keygen -t rsa -f ~/.ssh/id_rsa

接着键入以下指令:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

测试一下,出现以下提示:

hadoop@long-virtual-machine:~$ ssh localhost
ssh: connect to host localhost port 22: Connection refused

解决方法:
a 关闭防火墙

sudo ufw enable  (开启)
sudo ufw disable (关闭)
sudo ufw status  (查看状态)

b 安装openssh-server

sudo apt-get install openssh-server

可用以下命令查看:

hadoop@long-virtual-machine:/home/long/.ssh$ ps -e|grep ssh
3680 ?        00:00:00 sshd

ssh localhost, 发现成功了。

PS: 这里先设置了ssh免密码登录,后面复制另外两台机,也可以进行免密码互相登录。但是,如果复制之后再来设置的话,就需要将3台机上的公钥即id_rsa.pub 都添加到各自的 ~/.ssh/authorized_keys 文件里,包括本机的公钥。

4、安装hadoop 2.6.5

官网上下载安装包:hadoop-2.6.5.tar.gz
解压到/usr/local目录下:

tar -xzvf hadoop-2.6.5.tar.gz 

/usr/local/hadoop-2.6.5 目录下新建tmp(临时文件)、hdfs/name(namenode)、hdfs/data(数据)3个目录

设置环境变量

# set JDK env
JAVA_HOME=/usr/local/jdk1.8.0_144
JRE_HOME=${JAVA_HOME}/jre
CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:${JAVA_HOME}/lib

# set hadoop env
HADOOP_HOME=/usr/local/hadoop-2.6.5
PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${HADOOP_HOME}/lib:${JAVA_HOME}/bin:${PATH}
export HADOOP_HOME JAVA_HOME JRE_HOME PATH CLASSPATH

注:一定要配置$HADOOP_HOME/lib,否则执行时可能会提示找不到类。

运行 source /etc/profile, 使其立即生效。

hadoop-2.6.5/etc/hadoop/hadoop-env.sh   # 环境变量
hadoop-2.6.5/etc/hadoop/yarn-env.sh     # 运行YARN的脚本所使用的环境变量
hadoop-2.6.5/etc/hadoop/core-site.xml   # hadoop core 的配置项,如hdfs和mapreduce常用的IO设置等
hadoop-2.6.5/etc/hadoop/hdfs-site.xml   # hadoop 守护进程的配置项,namenode
hadoop-2.6.5/etc/hadoop/mapred-site.xml # mapreduce 守护进程的配置项
hadoop-2.6.5/etc/hadoop/yarn-site.xml   # YARN守护进程的配置设置:资源管理器,作业历史服务器、Web应用程序代理服务器和节点管理器

hadoop-env.sh:

export JAVA_HOME=/usr/local/jdk1.8.0_144

yarn-env.sh:

export JAVA_HOME=/usr/local/jdk1.8.0_144

core-site.xml:

<configuration>
 <property>
     <name>fs.default.name</name>
     <value>hdfs://master:9000</value>
     <description>HDFS的URI,文件系统://namenode标识:端口号</description>
 </property>

 <property>
     <name>hadoop.tmp.dir</name>
     <value>/usr/local/hadoop-2.6.5/tmp</value>
     <description>namenode上本地的hadoop临时文件夹</description>
 </property>
</configuration>

hdfs-site.xml:

<configuration>
<property>
    <name>dfs.name.dir</name>
    <value>/usr/local/hadoop-2.6.5/hdfs/name</value>
    <description>namenode上存储hdfs名字空间元数据 </description> 
</property>

<property>
    <name>dfs.data.dir</name>
    <value>/usr/local/hadoop-2.6.5/hdfs/data</value>
    <description>datanode上数据块的物理存储位置</description>
</property>

<property>
    <name>dfs.replication</name>
    <value>1</value>
    <description>副本个数,配置默认是3,应小于datanode机器数量</description>
</property>
</configuration>

mapred-site.xml:

<configuration>
<property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
</property>
</configuration>

yarn-site.xml:

<configuration>

<!-- Site specific YARN configuration properties -->
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
<property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>${yarn.resourcemanager.master}:8088</value>
</property>
</configuration>

5、复制虚拟机

这里写图片描述

前面1-4均是在master中设置的,现在直接复制两份出来并改个名字(由于C盘空间不足,所以复制到D盘了)

6、xshell登录

分别用ifconfig 查出3 台机分配的IP ,然后用这个IP在xshell中新建一个会话,输入用户名和密码即可。
PS: 需要将网络设置成 桥接模式。
设置完后,用xshell登录,方便控制,如下:
这里写图片描述

7、继续配置

a、配置/etc/hosts文件(3台机均需要配置):

127.0.0.1   localhost
127.0.1.1   long-virtual-machine
192.168.1.106 master
192.168.1.107 slave1
192.168.1.108 slave2

配置完之后,分别用如下指令测试是否可以免密码登录,3台机都要试一次,因为第一次需要输入yes确认,测试完,以后就不再需要输入yes 了。

ssh master
ssh slave1
ssh slave2   # 第一次均需要输入yes确认

基本没什么问题。

b、slaves(好像只需要配置master 即可,但全配置一遍准备没错)
hadoop@long-virtual-machine:/usr/local/hadoop-2.6.5$ vi etc/hadoop/slaves
输入:

slave1
slave2

保存即可

8、格式化

$ bin/hdfs namenode –format

之前遇到一个错误,如下 :
这里写图片描述
解决方法:
这里写图片描述
再次格式化:
这里写图片描述
成功。

9、启动

sbin/start-all.sh

用jps 查看:
master:

hadoop@long-virtual-machine:/usr/local/hadoop-2.6.5$ jps
47945 SecondaryNameNode
48107 ResourceManager
48174 Jps
47775 NameNode

slave1:

hadoop@long-virtual-machine:~$ jps
40793 DataNode
41081 Jps
40907 NodeManager

这应该算成功了吧,后期验证之后再补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值