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 ...
随机推荐
- OAuth 2.0 了解了,OAuth 2.1 呢?
OAuth 2.0 OAuth 2.0 是工业级标准授权协议. OAuth 2.0 聚焦于客户端开发者便利性,为网页应用程序.桌面客户端.手机.客厅设备提供特定的授权流程. RFC6749 OAuth ...
- 1091 Acute Stroke
One important factor to identify acute stroke (急性脑卒中) is the volume of the stroke core. Given the re ...
- ubuntu14.04忽然不能登录,输入密码一直返回登录界面
解决方法: 1.ctrl + alt + F1进入命令终端 2.重装gdm,sudo apt-get install gdm 3.修改启动顺序:dpkg -reconfigure gdm 4.重启re ...
- LA3971组装电脑
题意: 你有b块钱,想要组装一台电脑,给你提供一些零件,每种零件提供一个或几个,组装电脑的前提是每种零件只能也必须选择一个,每种零件都有自己的种类,名字,价格,还有品质,要求是在能配成电脑 ...
- Supervisord远程命令执行漏洞(CVE-2017-11610)
目录 Supervisor 漏洞复现 修复建议 Supervisor Supervisor是使用Python 开发的进程管理程序,一般使用命令行进行管理,当然也能通过web接口图形化管理服务.在配置了 ...
- Android持续优化 - 提高流畅度
http://www.cnblogs.com/purediy/archive/2013/12/26/3492865.html
- Day004 Scanner对象
Scanner对象 作用 我们可以通过Scanner类来获取用户的输入 所属包 java.util.Scanner java 工具类下 基本语法 Scannner s=new Scanner( ...
- 注解配置定时器Scheduling
注解配置定时器配置 package com.demo; import org.springframework.context.annotation.Configuration; import org. ...
- 二、jmeter模拟请求头及监听器之结果树
一.模拟请求头 利用jmeter发送http请求时,被接收的服务端会对发送的该请求进行初步判断,如果不是web端发送的请求就会被打回导致请求不通,这时候需要模拟请求头,模拟正常的用户行为进行发送请求 ...
- 多线程-2.线程创建方式和Thread类
线程的创建方式 1.继承Thread类,重写run方法,示例如下: 1 class PrimeThread extends Thread { 2 long minPrime; 3 PrimeThrea ...