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

本次实验用到的有虚拟机,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. SAAS云平台搭建札记: (四) AntD For React使用react-router-dom路由接收不同参数页面不刷新的问题

    在.net开发员眼里,如果使用MVC,根据路由匹配原则,可以通过各种方式接收参数,比如 /Post/List/1, /Post/List/2,或者 /Post/List?id=1,/Post/List ...

  2. Java集合原理分析和知识点大杂烩(多图初学者必备!!)

    一.数据结构 ​ 数据结构就是计算机存储.组织数据的方式. ​ 在计算机科学中,算法的时间复杂度是一个函数,它定性描述了该算法的运行时间,常用O符号来表述. ​ 时间复杂度是同一问题可用不同算法解决, ...

  3. hdu1505 暴力或dp优化

    题意:        给你一个矩阵,让你在里面找到一个最大的f矩阵.. 思路:       三种方法ac这到题目;  方法(1) 以宽为主,暴力    开一个数组sum[i][j],记录当前这个位置的 ...

  4. OD调试程序常用断点大全

    常用断点  拦截窗口:  bp CreateWindow 创建窗口  bp CreateWindowEx(A) 创建窗口  bp ShowWindow 显示窗口  bp UpdateWindow 更新 ...

  5. Android Linker 与 SO 加壳技术

    1. 前言 Android 系统安全愈发重要,像传统pc安全的可执行文件加固一样,应用加固是Android系统安全中非常重要的一环.目前Android 应用加固可以分为dex加固和Native加固,N ...

  6. hdu4915 判断括号匹配

    题意:       问你括号匹配是否唯一,三种字符'(','?',')',问号可以变成任何字符. 思路:       首先我们要学会判断当前串是否成立?怎么判断?我的方法是跑两遍,开三个变变量 s1 ...

  7. Win64 驱动内核编程-6.内核里操作注册表

    内核里操作注册表 RING0 操作注册表和 RING3 的区别也不大,同样是"获得句柄->执行操作->关闭句柄"的模式,同样也只能使用内核 API 不能使用 WIN32 ...

  8. MSF和CobaltStrike联动

    目录 当获取了CobaltStrike类型的session后,想派生一个MSF类型的shell

  9. SSRF_FastCGI

    SSRF_FastCGI 目录 SSRF_FastCGI FastCGI协议 SSRF ssrf + fastcgi 参考 FastCGI协议 简介 Fast CGI源自旧版本的CGI 路由/结构图 ...

  10. 【js】Leetcode每日一题-解码异或后数组

    [js]Leetcode每日一题-解码异或后数组 [题目描述] 未知 整数数组 arr 由 n 个非负整数组成. 经编码后变为长度为 n - 1 的另一个整数数组 encoded ,其中 encode ...