centOS 7-Hadoop3.3.0完全分布式部署
本文内容不乏对各大佬的案例借鉴,侵删。
本次实验用到的有虚拟机,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完全分布式部署的更多相关文章
- hyperledger fabric 1.0.5 分布式部署 (八)
gdb debug peer 程序 在开始我们从 github 上download 下来的源码包,实际上已经包含了可执行的 peer 程序,但是该程序是使用 release 方式编译的,并不支持gdb ...
- hyperledger fabric 1.0.5 分布式部署 (七)
fabric 使用 fabric-ca 服务 准备部分 首先需要用户从github上download fabric-ca 的工程代码 cd $GOPATH/src/github.com/hyperle ...
- hyperledger fabric 1.0.5 分布式部署 (六)
如何在相同的peer 节点上创建多个 channel 作者在hyperledger fabric 1.0.5 分布式部署 (五)已经向读者们介绍了一个简单的fabric 的部署流程,那么根据上一篇博客 ...
- hyperledger fabric 1.0.5 分布式部署 (五)
梳理fabric e2e_cli 测试程序的具体步骤 作者在 hyperledger fabric 1.0.5 分布式部署 (一)中给读者们介绍了如何从零开始部署一个测试的 demo 环境,如果细心的 ...
- hyperledger fabric 1.0.5 分布式部署 (四)
chaincode 的开发 作者在hyperledger fabric 1.0.5 分布式部署 (三)中向读者介绍了如何开发fabric 的chaincode,那么实际上chaincode 还有其他的 ...
- hyperledger fabric 1.0.5 分布式部署 (二)
环境:2台 ubuntu 16.04 角色列表 角色 IP地址 宿主端口 docker端口 peer0.org1.example.com 47.93.249.250 7051 7051 pe ...
- hadoop2.6.0完全分布式部署
这里是hadoop最小的配置,也就是修改最少量的东西让hadoop跑起来. 系统是 Centos6.7 64位, hadoop是2.6.0,虚拟机是VMWare WorkStation 假设虚拟机启动 ...
- hyperledger fabric 1.0.5 分布式部署 (三)
本篇博客主要是向读者介绍 fabric 在部署时的一些细节,还有作者自己学习过程中的心得. 初始化相关密钥的程序,实际上是一个shell脚本,并且结构特别简单 generateArtifacts.sh ...
- hyperledger fabric 1.0.5 分布式部署 (一)
环境是个人虚拟机ubuntu 16.04 64 位版本 前期用户需要先安装好:gcc.g++.git 软件 安装 golang 首先给环境安装一个 go 语言环境,版本最好在1.8 以上 golang ...
随机推荐
- .NET Core - 自定义项目模板
前言: 前面介绍 自定义项目模板 中介绍了一种简单的方式--通过创建项目导出为项目模板方式实现.本次将采用dotenet cil(手脚架)来创建项目模板. 那么,我们首先看下当前dotnet 支持的项 ...
- 分页系列之一:SQL Server 分页存储过程
以下为最基本的代码结构,SQL Server 2012 开始支持 CREATE PROCEDURE procXXX @Page int, --当前页码,从1开始 @PageSize int --每页记 ...
- 数据结构(3):java使用数组模拟堆栈
堆栈原理: 数组模拟堆栈: //数组模拟栈 class ArrayStack{ //栈顶 private int top = -1; private int maxSize; private int[ ...
- git 配置ssh
git 配置ssh 生成一个个人账号/邮箱的sshkey ssh-keygen -t rsa -C "youremail@yourcompany.com" -f ~/.ssh/XX ...
- Tars-Java客户端源码分析
一.基本RPC框架简介 在分布式计算中,远程过程调用(Remote Procedure Call,缩写 RPC)允许运行于一台计算机的程序调用另一个地址空间计算机的程序,就像调用本地程序一样,无需额外 ...
- 网络原理常用CMD命令字
1. 运行"ipconfig/all"命令,将命令运行结果截图贴上来,并指出本机IP地址和网关IP 2. 运行"ping"命令,目标参数分别是 邻居IP.com ...
- 【微信小程序】--bindtap参数传递,配合wx.previewImage实现多张缩略图预览
本文为原创随笔,纯属个人理解.如有错误,欢迎指出. 如需转载请注明出处 在微信小程序中预览图片分为 a.预览本地相册中的图片. b.预览某个wxml中的多张图片. 分析:实质其实是一样的.都是给wx. ...
- linux命令解压压缩rar文件
一.widonds下打包rar文件并上传 yum install lrzsz rz test.rar 二.下载并安装rar软件 2.1 下载 mkdir -p /home/oldboy/tools c ...
- TLB和CPU缓存
TLB 如果每次应用程序访问一个线性地址都需要先解析(查PDT,PTT)那么效率十分低,为了提高执行效率CPU在CPU内部建立了一个TLB表,此表和寄存器一样访问速度极高.其会记录线性地址和物理地址之 ...
- C++知识概要
static的用法和作用 在全局变量前加上关键字 static,全局变量就定义成一个全局静态变量.存储在静态存储区,在整个程序运行期间一直存在.同时全局静态变量在声明他的文件之外是不可见的 在局部变量 ...