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

本次实验用到的有虚拟机,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. hdu4496并查集的删边操作

    题意:       给你一个图,问你删除一些边后还有几个连通快.. 思路:       典型的并查集删边操作,并查集的删边就是先把不删除的边并查集一边(本题没有不删除的边),然后逆序吧所有要删除的边以 ...

  2. POJ3070矩阵快速幂简单题

    题意:       求斐波那契后四位,n <= 1,000,000,000. 思路:        简单矩阵快速幂,好久没刷矩阵题了,先找个最简单的练练手,总结下矩阵推理过程,其实比较简单,关键 ...

  3. [CTF]猪圈密码

    [CTF]猪圈密码 -------------------- 百度百科 本词条由"科普中国"百科科学词条编写与应用工作项目 审核 . https://baike.baidu.com ...

  4. (Py练习)输入某年某月判断天数

    # 输入某年某月,判断这一天是这一年的第几天 year = int(input("year:\n")) month = int(input("month:\n" ...

  5. Day006 方法的定义和调用

    方法的定义 Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法: 方法包含一个方法头和一个方法体.下面是一个方法的所有部分: 修饰符:修饰符,这 ...

  6. 在@Data注释lombok上使用继承警告等于/ hashCode(Warning equals/hashCode on @Data annotation lombok with inheritance)

    生成equals / hashCode实现但没有调用超类,即使这个类没有扩展java.lang.Object.如果这是故意的,请将 @EqualsAndHashCode(callSuper = fal ...

  7. 解决docker镜像无法删除的问题

    发现问题 来自守护进程的错误响应:冲突:无法删除050f26b6caca(必须强制) - 映像在多个存储库中被引用 Error response from daemon: conflict: unab ...

  8. 【ECharts】报表联动,动态数据设计

    说明: 数据没有拉取后台数据,仅仅前端模拟数据,Copy即可有效果.联动后台时,使用异步获取数据即可.鼠标点击,动态展示点击项的数据.有关更多实例,请移步到echarts官网查看. 成果展示: 相关代 ...

  9. 学javaweb 先学Servlet 应用理论很重要

    package cn.Reapsun.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.ser ...

  10. window 下如何安装redis

    1.官方没有 Windows版本的 Redis,但是微软开发并维护了针对Win64的Windows版本. Windows版本下载地址:https://github.com/MicrosoftArchi ...