本文内容不乏对各大佬的案例借鉴,侵删。

本次实验用到的有虚拟机,Xshell,Hadoop压缩包和jdk压缩包

  hadoop111A:192.168.241.111 hadoop222B:192.168.241.112 hadoop333C:192.168.241.113
HDFS

NameNode

DataNode

DataNode

secondaryNameNode

DataNode

YARN NodeManager

ResourceManager

NodeManager

NodeManager

我这边用的三台虚拟机和对应的IP是:

hadoop111A  192.168.241.111

hadoop222B  192.168.241.112

hadoop333C  192.168.241.113

先在虚拟机里面安装好一个centOS 7,然后把静态IP配置好

先进入 /etc/sysconfig/network-scripts 里面有个名为 ifcfg-ens33 的文件,修改这个文件。

cd /etc/sysconfig/network-scripts
vim ifcfg-ens33

修改这些配置的时候 会由于权限不够,会报错已保存但未修改,我是直接转换成root用户进行修改的,这样一来比较方便。输入命令:su  转换成root用户

把里面没用的内容删掉,保留有用的,我修改的内容是这样的;复制粘贴的时候记得按 i 转为插入模式

DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.241.111
PREFIX=24
GATEWAY=192.168.241.2
DNS1=192.168.241.2
DNS2=8.8.8.8

然后重启网络管理

service NetworkManager restart

现在就可以看看你的IP发生的变化,然后ping一下百度,看看是否能建立数据传输。

现在可以通过xshell链接linux了,接着就是修改主机名

vim /etc/hostname

hadoop111A 就是我这台虚拟机的主机名

这里我们可以先把映射写好,预先写入你另外两台虚拟机的主机名和IP

vim /etc/hosts

然后就是安装Hadoop和jdk,这两个软件包可以去相应的官网下载,值得注意的是,jdk我们要下载1.8版本的,我先前安装的16.0版本的,出现了问题,可能是不兼容吧,我看很多大佬安装的都是1.8版本的,所以我下载了1.8版本安装之后,就没有出现问题了。

我们在Windows上下载好这些软件包之后,可以通过xshell这一些工具传进来,我图方便,就直接拖进虚拟机,然后找到软件包在linux里的位置,进行移动和解压。

安装jdk,因为sentos7自带有jdk,所以我们要将其删除,先查看系统中的jdk

rpm -qa | grep java

这里我们可以看到有1.8和1.7的jdk,我们只需要删除jdk

rpm -e --nodeps jdk名字

软件包的名字可以在上面复制粘贴,运行 rpm -qa | grep java 查看是否删除完毕

现在就是解压jdk了,路径可以自己选,我这边是安装在 /usr/java 里面  用命令解压文件

tar -zxvf jdk软件包名

给jdk添加环境变量,添加在最后面

vim /etc/profile
##JAVA_HOME
JAVA_HOME=/usr/java/jdk1.8.0_291
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib.dt.jar:$JAVA_HOME/lib/tools.jar:$JER_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

应用profile配置

source /etc/profile

查看jkd

java -version

显示有版本号就说明安装成功了

按Hadoop和定义配置文件

和安装jdk一样,先把Hadoop压缩包解压

添加环境变量

vim /etc/profile
##HADOOP_HOME
export HADOOP_HOME=/opt/soft/hadoop/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

进入hadoop的etc里面修改相应的配置文件

配置 core-site.xml

<!--指定namenode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop111A:8020</value>
</property>
<!-- 指定 Hadoop 运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/soft/hadoop/hadoop-3.3.0/data</value>
</property>

配置 hadoop-env.sh 如果这个不添加,那么hadoop运行的时候就会报错说找不到jdk的位置

export JAVA_HOME=/usr/java/jdk1.8.0_291

配置 hdfs-site.xml

<!--nn web端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop111A:9870</value>
</property>
<!-- 2nn web端访问地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop333C:9868</value>
</property>

配置 yarn-site.xml

<!-- 指定 MR 走shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 YARN 的 ResourceManager 的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop222B</value>
</property>

配置 mapred-site.xml

<!-- 指定 MR 运行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

配置 workers

hadoop111A
hadoop222B
hadoop333C

配置完毕后关机,在虚拟机里面完全克隆两台虚拟机,并将其IP和主机名修改好

完事后,进行免密登陆设置,运行指令创建免密登陆密钥

ssh-keygen -t rsa

一路回车下去后,私钥和公钥就在 /root/.ssh 里面建立了

进入这个文件夹就可以看到了

cd /root/.ssh

创建一个名为 authorized_keys 的文件

touch authorized_keys

然后将公钥写进这个文件,三台主机都要进行这样的操作

cat id_rsa.pub >> authorized_keys

期间如果写入不了,那多半是权限不够,这时候我们可以修改下他们的权限

chmod 600 authorized_keys
chmod 700 /root/.ssh

然后用vim打开 authorized_keys 就可以看到密钥了,我就不传来传去了,直接简单粗暴,直接复制粘贴了

然后用ssh链接试试,我这边链接hadoop222B

这样就是链接上了,如个报错说找不到,那就是前面映射没设置好,如果报错无法链接,那就修改下面的配置

修改 /etc/ssh/ssh_config 文件的内容

StrictHostKeyChecking ask打开注释修改为StrictHostKeyChecking no即可

vim /etc/ssh/ssh_config

现在就可以格式化hadoop了

期间没有任何报错,那就是成功了,如果报错意外终止,那就是配置文件里面的标签没打好

在 hadoop/sbin 里面可以看到这些文件

这里我们先启动start-dfs.sh

jps查看一下

hadoop111A启动的是 NameNode 和 DataNode

hadoop222B启动的是 DataNode

hadoop333C启动的是 DataNode 和 SecondaryNameNode

这时候我们就可以打开浏览器访问hadoop111A:9870

然后在hadoop222B中启动

jps查看

对照上面表格的启动项,是一样的就对了,必须要和部署的一摸一样

然后在浏览器里面输入hadoop222B:8088

这样就算是部署好了

如果期间 ResourceManager 启动不了

启动start-dfs.sh报错Attempting to operate on hdfs namenode as root
在/hadoop/sbin路径下:
将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数

#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

还有,start-yarn.sh,stop-yarn.sh顶部也需添加以下:

#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

centOS 7-Hadoop3.3.0完全分布式部署的更多相关文章

  1. hyperledger fabric 1.0.5 分布式部署 (八)

    gdb debug peer 程序 在开始我们从 github 上download 下来的源码包,实际上已经包含了可执行的 peer 程序,但是该程序是使用 release 方式编译的,并不支持gdb ...

  2. hyperledger fabric 1.0.5 分布式部署 (七)

    fabric 使用 fabric-ca 服务 准备部分 首先需要用户从github上download fabric-ca 的工程代码 cd $GOPATH/src/github.com/hyperle ...

  3. hyperledger fabric 1.0.5 分布式部署 (六)

    如何在相同的peer 节点上创建多个 channel 作者在hyperledger fabric 1.0.5 分布式部署 (五)已经向读者们介绍了一个简单的fabric 的部署流程,那么根据上一篇博客 ...

  4. hyperledger fabric 1.0.5 分布式部署 (五)

    梳理fabric e2e_cli 测试程序的具体步骤 作者在 hyperledger fabric 1.0.5 分布式部署 (一)中给读者们介绍了如何从零开始部署一个测试的 demo 环境,如果细心的 ...

  5. hyperledger fabric 1.0.5 分布式部署 (四)

    chaincode 的开发 作者在hyperledger fabric 1.0.5 分布式部署 (三)中向读者介绍了如何开发fabric 的chaincode,那么实际上chaincode 还有其他的 ...

  6. hyperledger fabric 1.0.5 分布式部署 (二)

    环境:2台 ubuntu 16.04 角色列表 角色 IP地址 宿主端口 docker端口  peer0.org1.example.com  47.93.249.250  7051  7051  pe ...

  7. hadoop2.6.0完全分布式部署

    这里是hadoop最小的配置,也就是修改最少量的东西让hadoop跑起来. 系统是 Centos6.7 64位, hadoop是2.6.0,虚拟机是VMWare WorkStation 假设虚拟机启动 ...

  8. hyperledger fabric 1.0.5 分布式部署 (三)

    本篇博客主要是向读者介绍 fabric 在部署时的一些细节,还有作者自己学习过程中的心得. 初始化相关密钥的程序,实际上是一个shell脚本,并且结构特别简单 generateArtifacts.sh ...

  9. hyperledger fabric 1.0.5 分布式部署 (一)

    环境是个人虚拟机ubuntu 16.04 64 位版本 前期用户需要先安装好:gcc.g++.git 软件 安装 golang 首先给环境安装一个 go 语言环境,版本最好在1.8 以上 golang ...

随机推荐

  1. BPM系统,工作流引擎,表单引擎常用30个功能与常见问题

    1.1:支持国际化 如果使用工具包的模式开发,支持国际化的工作由自己完成的. 如果使用Ccbpm 的前端,主要的功能页面已经支持, 后台的设置的页面全部中文,没有做支持国际化. 1.2:能单独部署,微 ...

  2. 10276 - Hanoi Tower Troubles Again!(思维,模拟)

    People stopped moving discs from peg to peg after they know the number of steps needed to complete t ...

  3. C实现十进制与十六进制转换

    include <stdio.h> include <stdlib.h> include <string.h> include <locale.h> i ...

  4. hdu4585 STL水题

    题意:       成立少林寺,刚开始有一个大师,id是1,攻击力是10E,现在陆续来人,每个人有自己的id,和自己的攻击力,但是每一个新来的要和之前的和尚pk,他必须选择和他攻击力差值最小的那个,如 ...

  5. hdu1287 破译密码

    题意: 破译密码 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  6. Day009 Arrays类

    Arrays类 数组的工具类java.util.Arrays 由于数组对象本身并没有什么方法可以供我们调用,但Api中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作. 查 ...

  7. 安装和简单使用apidoc

    安装nodejs 参考链接 安装apidoc 参考链接 使用 https://www.bilibili.com/video/BV1MW411Q7g4 https://www.bilibili.com/ ...

  8. featuretools的几个高级特性

    摘要:记录工作中用到的featuretools的部分高级特性. 1.防止信息泄露 在调用dfs时,将主表的观测时间列连同id列作为cutoff_time,可以在构造特征时自动将子表中在cutoff_t ...

  9. Redis6.x学习笔记(一)

    前言 最近学习Redis6.x,特做笔记以备忘,与大家共学.课程是从私塾在线下载的,他们把架构师课程都放出来了,大家可以去下载学习,不要钱的,地址是http://t.hk.uy/eac,课程很不错,值 ...

  10. 头文件string.h,cstring与string

    string.h string.h是一个C标准头文件,所有的C标准头文件都形如name.h的形式,通过#include <string.h>可以导入此头文件.之后我们就可以在程序中使用st ...