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 ...
随机推荐
- hdu4496并查集的删边操作
题意: 给你一个图,问你删除一些边后还有几个连通快.. 思路: 典型的并查集删边操作,并查集的删边就是先把不删除的边并查集一边(本题没有不删除的边),然后逆序吧所有要删除的边以 ...
- POJ3070矩阵快速幂简单题
题意: 求斐波那契后四位,n <= 1,000,000,000. 思路: 简单矩阵快速幂,好久没刷矩阵题了,先找个最简单的练练手,总结下矩阵推理过程,其实比较简单,关键 ...
- [CTF]猪圈密码
[CTF]猪圈密码 -------------------- 百度百科 本词条由"科普中国"百科科学词条编写与应用工作项目 审核 . https://baike.baidu.com ...
- (Py练习)输入某年某月判断天数
# 输入某年某月,判断这一天是这一年的第几天 year = int(input("year:\n")) month = int(input("month:\n" ...
- Day006 方法的定义和调用
方法的定义 Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法: 方法包含一个方法头和一个方法体.下面是一个方法的所有部分: 修饰符:修饰符,这 ...
- 在@Data注释lombok上使用继承警告等于/ hashCode(Warning equals/hashCode on @Data annotation lombok with inheritance)
生成equals / hashCode实现但没有调用超类,即使这个类没有扩展java.lang.Object.如果这是故意的,请将 @EqualsAndHashCode(callSuper = fal ...
- 解决docker镜像无法删除的问题
发现问题 来自守护进程的错误响应:冲突:无法删除050f26b6caca(必须强制) - 映像在多个存储库中被引用 Error response from daemon: conflict: unab ...
- 【ECharts】报表联动,动态数据设计
说明: 数据没有拉取后台数据,仅仅前端模拟数据,Copy即可有效果.联动后台时,使用异步获取数据即可.鼠标点击,动态展示点击项的数据.有关更多实例,请移步到echarts官网查看. 成果展示: 相关代 ...
- 学javaweb 先学Servlet 应用理论很重要
package cn.Reapsun.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.ser ...
- window 下如何安装redis
1.官方没有 Windows版本的 Redis,但是微软开发并维护了针对Win64的Windows版本. Windows版本下载地址:https://github.com/MicrosoftArchi ...