栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Hadoop完全分布式安装步骤

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hadoop完全分布式安装步骤

  • 按步骤来
配置分析 1.集群配置

2.环境
  • 虚拟机
  • centos7
  • jdk8

开始配置

  • 截图的颜色为什么变了俺也不知道!但是VM是同一个,放心
  • 有几个地方做的时候忘记截图,完了之后才反过来截图,所以图片内的某些提示语可能不同

虚拟机安装centos7 1.分析
  • 相当于模板虚拟机,后序再想安装时直接克隆

2.下载centos7
  • 提取码:5l27
3.虚拟机安装centos7硬件与软件


















  • Ctrl+Alt可以切出鼠标









  • 此处需要统一许可(忘记截图)










打开终端
  • 也可以切换成图形界面,不切也没关系,继续向下
配置虚拟机启用网卡, 并设置固定IP地址 1.分析
  • 作用
1.笔记本主机IP为设置自动获取,不管什么情况下,不受虚拟机影响,只要连接外网就可以正常上网
2.只要笔记本主机可以正常访问外网,启动虚拟机中的CentOS 7系统就可以正常访问外网,无需再进行任何设置
3.虚拟机设置为固定IP,不管主机在什么网络环境下,是断网环境,还是连接任何网段访问外网的环境下,虚拟机的IP都固定不变,而且使用终端连接,始终不变,正常连接
4.虚拟机的固定IP可以按照自己想设置的IP地址网段随意设置,比如我就想设置固定IP为192.168.10.100
  • 配置原理

2.设置VM的IP
  • 设置虚拟机的网络连接方式
  • 这一步有的机器可能没有
  • 修改子网IP,实现自由设定固定IP,1网段无法成功(第三位IP段)

3.配置笔记本主机具体VMnet8本地地址参数



4.修改虚拟机中的CentOS 7系统为固定IP的配置文件
  • 输入su root指令切换到root用户(未截图)
  • ifcfg-ens33是虚拟机的网卡,配置连接VMnet8的网关,通过网关连接主机的网卡


    i编辑 esc退出编辑 :wq退出保存
  • 给出部分命令供复制
1.cd /etc/sysconfig/network-scripts
2.vim ifcfg-ens33
	DNS1=114.114.114.114
	IPADDR=192.168.10.100
	NETMASK=255.255.255.0
	GATEWAY=192.168.10.2                    
3.service network restart
5.检验配置是否成功
  • 查看修改后的固定IP
  • 测试虚拟机中的CentOS 7系统是否能连外网
  • 测试本机是否能ping通虚拟机的固定IP
修改主机名


在centos中安装sftp服务 1.分析
  • sftp安全文件传送协议,传输文件的安全网络加密方法
  • 为了上传文件到虚拟机系统

2.确认已安装好ssh服务

3.配置sftp



  • 给出部分命令供复制
Match Group sftp
ChrootDirectory /usr/sftp
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
4.检验配置是否成功
  • 进入xftp



关闭防火墙
1.systemctl disable firewalld.service
	取消开机自启动防火墙
2.systemctl status firewalld
时间同步 1.配置


2.问题
  • 报错
  • 解决
安装jdk 1.删除centos自带openjdk
  • 删除所有(之前没有装过jdk)
  • 给出部分命令供复制
1.rpm -qa | grep jdk
2.yum -y remove 
  • 检验是否删除
2.finalshell连接虚拟机


3.创建目录,上传jdk到linus


4.解压

  • 若解压后的文件名字太长,最好重命名(自己百度以下相关命令)
5.配置环境变量


  • 给出部分命令供复制
JAVA_HOME=/usr/java/jdk1.8.0_151
JRE_HOME=/usr/java/jdk1.8.0_151/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin 
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib 
export JAVA_HOME JRE_HOME PATH CLASSPATH
配置主机地址映射文件 1.配置centos7中的/etc/hosts


  • 给出部分命令供复制
192.168.10.100 node1 master nn
192.168.10.101 node2 snn dn1
192.168.10.102 node3 dn2
192.168.10.103 node4 dn3
2.配置windows中的 C:WindowsSystem32driversetchosts

克隆虚拟机,重复以上-打开终端-后的部分步骤 1.克隆虚拟机
  • 关闭虚拟机
  • 克隆虚拟机





2.重复配置步骤
  • 主机名,固定IP等是需要修改的
  • 具体我也忘记统计了
  • 可以自己试一试,若发现已经配置过了,直接跳过该配置
3.问题
  • 克隆后无法同时开启四台虚拟机
  • 解决
免密钥设置 1.分析
  • 原理
1.node1生成公私密钥对,存储在~/.ssh/id_rsa目录下
2.node1将公钥~/.ssh/id_rsa.pub写入node2的tmp临时文件下
3.node2生成公私密钥对,存储在~/.ssh/id_rsa目录下
3.node2将tmp下的公钥信息保存到~/.ssh/authorized_keys

node1发送公钥给node2,node1登录node2时,node2通过公钥加密后发送给node1,node1通过私钥解密,成功则可以免密登录

2.设置本机免密登录
  • 在master主机中操作,此处配置的master是node1

  • 给出部分命令供复制
1.ssh-keygen -t rsa -P '' -f    ~/.ssh/id_rsa
	生成公私密钥对,存储在~/.ssh/id_rsa目录下
2.cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  
	将本机公钥加到受信列表中,即将公钥追加到服务端(远程主机)~/.ssh/authorized_keys中
3.chmod 0600 ~/.ssh/authorized_keys
	设置权限
  • 测试本机免密登录是否OK
2.将node1中的id_rsa.pub文件发到其它节点的authorized_keys中,以实现免密登录
  • 在node1中发送公钥文件到其它节点的tmp文件下保存,每次开机tmp文件被删除
  • 给出部分命令供复制
1.scp ~/.ssh/id_rsa.pub     node2:/tmp/
2.scp ~/.ssh/id_rsa.pub     node3:/tmp/
3.scp ~/.ssh/id_rsa.pub     node4:/tmp/
  • node2,node3,node4分别执行以下操作


  • 给出部分命令供复制
1.ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
	生成公私密钥对,存储在~/.ssh/id_rsa目录下
2.cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
	将本机公钥加到受信列表中,即将公钥追加到服务端(远程主机)~/.ssh/authorized_keys中
3.cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
	将需要免密登录本机的主机的公钥加到受信列表中
4.chmod 0600 ~/.ssh/authorized_keys
	设置权限
3.检验node1是否可以免密登录node2,node3,node4

Hadoop安装及配置 1.上传解压Hadoop,并配置环境变量

  • cd /usr/local(未截图)
  • tar -xvf 压缩文件名称(未截图)


  • 给出部分命令供复制
1.vim /etc/profile
	HADOOP_HOME=/usr/local/hadoop-2.7.1
	PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
	export PATH JAVA_HOME CLASSPATH HADOOP_HOME
	--------------------------------------------
	以上的配置方法与jdk环境变量的配置优点冗余,可以采取以下这种
	JAVA_HOME=/usr/java/jdk1.8.0_151
	JRE_HOME=/usr/java/jdk1.8.0_151/jre
	HADOOP_HOME=/usr/local/hadoop-2.7.1
	PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
	CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib 
	export JAVA_HOME JRE_HOME PATH CLASSPATH HADOOP_HOME
2.source /etc/profile
2.修改hadoop-2.7.1/etc/hadoop/hadoop-env.sh中的JAVA_HOME


3.配置hadoop-2.7.1/etc/hadoop/core-site.xml


  • 给出部分命令供复制
 
	fs.defaultFS 
	hdfs://node1:9000/ 
 
 
	hadoop.tmp.dir
	/opt/hadoopdata 
 
//注意hadoopdata目录不存在,由hadoop生成
4.配置hadoop-2.7.1/etc/hadoop/hdfs-site.xml


  • 给出部分命令供复制

    dfs.replication
    3


    dfs.namenode.secondary.http-address
     node2:50090

//注意hadoopdata目录不存在,由hadoop生成
5.hadoop-2.7.1/etc/hadoop/slaves中 指定三台DN


6.手动创建masters文件 指定SNN
  • 如不指定,则namenode所在的机器为snn

同步配置文件到其它节点

  • 给出部分命令供复制
1.scp -r hadoop-2.7.1/    node2:/usr/local/
2.scp -r hadoop-2.7.1/    node3:/usr/local/
3.scp -r hadoop-2.7.1/    node4:/usr/local/
格式化NN 1.格式化


2.多次格式化带来的问题
  • 每次格式化namenode会生成一个新的clusterID,而datanode的clusterID还是旧的
namenode的clusterID写在/opt/hadoopdata/dfs/name/current/VERSION文件中
datanode的clusterID写在/opt/hadoopdata/dfs/data/current/VERSION文件中
  • clusterID不一致导致datanode无法启动,只要把这两文件中的clusterID改一致就能正常启动
  • 修改namenode的clusterID或修改datanode的clusterID都行,但在集群情况下datanode的数量多,还是改namenode的clusterID比较方便

  • 问题



  • 解决:修改namenode的clusterID

启动 1.start-dfs.sh

2.启动信息
Starting namenodes on [node1]
node1: starting namenode, logging to /usr/local/hadoop271/logs/hadoop-root-namenode-node1.out
node2: starting datanode, logging to /usr/local/hadoop271/logs/hadoop-root-datanode-node2.out
node3: starting datanode, logging to /usr/local/hadoop271/logs/hadoop-root-datanode-node3.out
node4: starting datanode, logging to /usr/local/hadoop271/logs/hadoop-root-datanode-node4.out
Starting secondary namenodes [node2]
node2: starting secondarynamenode, logging to /usr/local/hadoop271/logs/hadoop-root-secondarynamenode-node2.out
3.启动成功后,查看进程

最后测试是否配置完毕 1.namenode查看
  • 注意防火墙是否开放50070端口
2.SNN查看

3.访问不到则关闭防火墙
  • 关闭防火墙
1.查看防火墙状态
	systemctl status firewalld.service
2.关闭运行的防火墙
	systemctl stop firewalld.service    
3.禁止防火墙服务器
	systemctl disable firewalld.service
  • 防火墙中打开8080端口
1.firewall-cmd --zone=public --add-port=8080/tcp --permanent
2.firewall-cmd --reload
3.firewall-cmd --list-port #查看开放的端口列表
4.http://node1:8080/
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/963983.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号