一,环境

主节点一台: ubuntu desktop 16.04

zhoujun      172.16.12.1

从节点(slave)两台:ubuntu server 16.04

hadoop2      172.16.12.131

hadoop3      172.16.12.129

二, 搭建前准备

1, 为每台服务器配置 /etc/hosts

sudo vim /etc/hosts

2,为每台机器 jdk 安装 ,具体的jdk类型大家可以根据自己的需求来选择,网上的方法也有很多

sudo apt-get install openjdk-8-jre openjdk-8-jdk

3,为每台机器 安装 openssh-server ××

 sudo apt-get install openssh-server

安装好后 使用 ssh 登录下本机,这是会自动创建一个 ~/.ssh 的隐藏文件夹,其中放的是 ssh的相关密钥

ssh localhost

然后在输入 exit 退出

exit

4, 为每个台机器之间建立 ssh 的免密登录  ××

cd ~/.ssh               # 如果没有该目录,先执行一次ssh localhost
rm ./id_rsa* # 删除之前生成的公匙(如果有)
ssh-keygen -t rsa # 一直按回车就可以

让主节点能够免密登录在主节点

cat ./id_rsa.pub >> ./authorized_keys

这里上图为zhoujun这台主机的免密登录成功, 其他两台,分别 执行 ssh hadoop2, 和 ssh hadoop3 都可以不用输入密码登录说明配置成功!

重点:   让主机能够免密登录到 hadoop2,和hadoop3

将zhoujun这台主机的公钥传到hadoop2,hadoop3的机器上

scp ~/.ssh/id_rsa.pub zhoujun@hadoop2:/home/zhoujun/   # 将 zhoujun这台机器的公钥传到 hadoop2 , 注意 hadoop2主机的用户名为 zhoujun
scp ~/.ssh/id_rsa.pub zhoujun@hadoop3:/home/zhoujun/
#  将 zhoujun这台机器的公钥传到 hadoop3 , 注意 hadoop3主机的用户名也为 zhoujun,根据自己的情况设定
#  scp 是 secure copy 的简写,用于在 Linux 下进行远程拷贝文件,类似于 cp 命令,不过 cp 只能在本机中拷贝。
#  执行 scp 时会要求输入 hadoop2 上 zhoujun 用户的密码,输入完成后会提示传输完毕,如下图所示:

关于scp的使用可以参考 scp 使用总结

然后在分别在 hadoop2,hdaoop3添加对应的公钥到 ssh的相关文件中

mkdir ~/.ssh       # 如果不存在该文件夹需先创建,若已存在则忽略
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub # 用完就可以删掉了

使用 ssh hadoop2 命令不需要输入密码就能成功登录了,会出现类似上图的界面!

注意: 最后让master能够连接slave, 同时也能让slave 免密登录到master,配置类似,将slave节点的公钥传到其他的slave和master节点,

然后进行上诉步骤添加公钥到各个主机之中,即可

三, hadoop 安装

1,  下载hadoop的 安装包

hadoop 2.8.2

解压

 tar -zxvf hadoop-2.8.2.tar.gz

将解压后的hadoop 修改文件名 ,放入/opt文件夹下, 这里可以恶搞那句自己的设置

sudo mv hadoop-2.8.2 /opt/hadoop/

进入到 /opt 文件夹下, 修改hadoop 文件夹的用户权限,这里我的用户名为 zhoujun, 请大家根据自己的用于名设置

cd /opt/
 sudo chown -R zhoujun ./hadoop/

2,  配置hadoop的配置文件  core-site.xml, hdfs-site.xml, mapred-site.cml, yarn-site.xml

vim   core-site.xml   # 注意是<configuration></configuration>中的内容

内容如下:

<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://zhoujun:9000</value>
</property>
</configuration>

vim hdfs-site.xml,

<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>zhoujun:50090</value>
</property>
<property>
<name>dfs.namenode.datanode.registration.ip-hostname-check</name>
<value>false</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/hadoop/tmp/dfs/data</value>
</property>
</configuration>

修改mapred-site.xml

cp mapred-site.xml.template mapred-site.xml

vim mapred-site.xml

内容如下:

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>zhoujun:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>zhoujun:19888</value>
</property>
</configuration>

修改 yarn-site.xml

vim yarn-site.xml

内容如下:

<configuration>

<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>zhoujun</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

配置slaves 文件

vim slaves

内容如下:

192.168.1.105
172.16.12.129
172.16.12.131

注意: 这里记得最好写 ip 地址,不要写主机名

3, 修改用户的 ~/.bashrc文件,注意这段内容每个节点都需要添加

vim ~/,bashrc

在文件的头部添加:

#Java
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 #Hadoop
export HADOOP_HOME=/opt/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

source ~/.bashrc   # 让用户配置文件生效

4,  将配置到的hadoop文件传到对应的 hadoop2, hadoop3 节点

先压缩, 再上传

 cd /opt/  # 切换目录
tar -zcf ./hadoop.tar.gz ./hadoop/ # 压缩文件

scp hadoop.tar.gz zhoujun@hadoop2:
scp hadoop.tar.gz zhoujun@hadoop3:

5, 然后分别进入hadoop2, hadoop3 节点,解压, 放入到 /opt 文件夹下,同时加入用户权限

tar -zxvf hadoop.tar.gz        # 解压
sudo mv hadoop /opt/hadoop     # 移动
sudo chown -R zhoujun /opt/hadoop # 授予权限

同理对于hadoop3 执行第5步,

6, 格式化hdfs文件系统

hdfs  namenode -format

在这一步请确保hdfs-site.xml中用到的文件及文件夹不存在,如有,请删除再执行上面的命令!

好了,集群安装基本上完成了

四, 测试:

进入主节点服务器:zhoujun节点 利用start-all.sh 启动

在浏览器上访问:

五, 注意问题!

一定要注意各个主机的网络,一定要是同一个路由器下的,即同一个网段下的服务器,不然可能出现只有一个datanode的情况,或者没有datanode等的问题!

其次,保证ssh 能够正常通信,这个是前提

最后,大家在安装的时候一定要细心,多一个字母数字,可能让你找半天的错!

hadoop(集群)完全分布式环境搭建的更多相关文章

  1. 沉淀,再出发——在Hadoop集群的基础上搭建Spark

    在Hadoop集群的基础上搭建Spark 一.环境准备 在搭建Spark环境之前必须搭建Hadoop平台,尽管以前的一些博客上说在单机的环境下使用本地FS不用搭建Hadoop集群,可是在新版spark ...

  2. 3-3 Hadoop集群完全分布式配置部署

    Hadoop集群完全分布式配置部署 下面的部署步骤,除非说明是在哪个服务器上操作,否则默认为在所有服务器上都要操作.为了方便,使用root用户. 1.准备工作 1.1 centOS6服务器3台 手动指 ...

  3. hadoop 集群HA高可用搭建以及问题解决方案

    hadoop 集群HA高可用搭建 目录大纲 1. hadoop HA原理 2. hadoop HA特点 3. Zookeeper 配置 4. 安装Hadoop集群 5. Hadoop HA配置 搭建环 ...

  4. Hadoop学习笔记(3)——分布式环境搭建

    Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里, ...

  5. 大数据系列(3)——Hadoop集群完全分布式坏境搭建

    前言 上一篇我们讲解了Hadoop单节点的安装,并且已经通过VMware安装了一台CentOS 6.8的Linux系统,咱们本篇的目标就是要配置一个真正的完全分布式的Hadoop集群,闲言少叙,进入本 ...

  6. Hadoop集群完全分布式坏境搭建

    前言 上一篇我们讲解了Hadoop单节点的安装,并且已经通过VMware安装了一台CentOS 6.8的Linux系统,咱们本篇的目标就是要配置一个真正的完全分布式的Hadoop集群,闲言少叙,进入本 ...

  7. 使用Docker搭建Hadoop集群(伪分布式与完全分布式)

    之前用虚拟机搭建Hadoop集群(包括伪分布式和完全分布式:Hadoop之伪分布式安装),但是这样太消耗资源了,自学了Docker也来操练一把,用Docker来构建Hadoop集群,这里搭建的Hado ...

  8. 基于docker的spark-hadoop分布式集群之一: 环境搭建

    一.软件准备 1.基础docker镜像:ubuntu,目前最新的版本是18 2.需准备的环境软件包: (1) spark-2.3.0-bin-hadoop2.7.tgz (2) hadoop-2.7. ...

  9. Hadoop集群 -Eclipse开发环境设置

    1.Hadoop开发环境简介 1.1 Hadoop集群简介 Java版本:jdk-6u31-linux-i586.bin Linux系统:CentOS6.0 Hadoop版本:hadoop-1.0.0 ...

随机推荐

  1. Asp.net Core 2.0 实现Cookie会话

    与1.0版本相比微软做了一些调整.详细请参考官方文档,我这里就讲2.0的吧 1.首先要在 根目录下 Startup.cs 类中启用 cookie会话,有两处要配置 第一处在  public void ...

  2. JedisCluster使用pipeline操作Redis Cluster最详细从0到1实现过程

    公众号文章链接:https://mp.weixin.qq.com/s/6fMsG009RukLW954UUndbw 前言 2020年4月30日,Redis 6.0.0正式发布,标志着redis从此告别 ...

  3. 编写 Dockerfile 生成自定义镜像

    一般情况下我们可以从公共渠道诸如 DockerHub 获取镜像上获取镜像,但是在实际生产过程中,往往需要定制化的镜像,例如修改一些配置文件,增加一些特殊的命令或软件等需求,这时就需要通过编写 Dock ...

  4. Prometheus集群介绍-1

    Prometheus监控介绍 公司做教育的,要迁移上云,所以需要我这边从零开始调研加后期维护Prometheus:近期看过二本方面的prometheus书籍,一本是深入浅出一般是实战方向的:官方文档主 ...

  5. python 中的sum( )函数 与 numpy中的 sum( )的区别

    一. python sum函数 描述: sum() 对序列进行求和 用法: sum(iterable[, start]) iterable:可迭代对象,例如,列表,元组,集合. start:指定相加的 ...

  6. Java基础--接口回调(接口 对象名 = new 类名)理解

    接口 对象名1 = new 类名和类名 对象名2 = new 类名的区别是什么? 实例 /** *Person.java 接口 */ public interface Person { void in ...

  7. windows下使用mingw和msvc静态编译Qt5.15.xx

    windows下使用mingw和msvc静态编译Qt5.15.xx 下载并安装相关依赖软件 Python version 2.7 https://www.python.org/downloads/ ( ...

  8. 【Linux】大于2T的磁盘怎么分区?

    环境CentOS7.1 2.9t磁盘 fdisk 只能分区小于2t的磁盘,大于2t的话,就要用到parted 1,将磁盘上原有的分区删除掉: 进入:#parted   /dev/sdb 查看:(par ...

  9. ctfhub技能树—sql注入—时间盲注

    打开靶机 查看页面信息 测试时间盲注 可以看到在执行命令后会有一定时间的等待,确定为时间盲注 直接上脚本 1 #! /usr/bin/env python 2 # _*_ coding:utf-8 _ ...

  10. STGAN: A Unified Selective Transfer Network for Arbitrary Image Attribute Editing 阅读笔记和pytorch代码解读

    一.论文采用的新方法 1.AttGan中skip connect的局限性 由于encoder中对特征的下采样实际上可能损失部分特征,我们在decoder中进行上采样和转置卷积也无法恢复所有特征,因此A ...