- 按步骤来
- 虚拟机
- centos7
- jdk8
开始配置
- 截图的颜色为什么变了俺也不知道!但是VM是同一个,放心
- 有几个地方做的时候忘记截图,完了之后才反过来截图,所以图片内的某些提示语可能不同
虚拟机安装centos7 1.分析
- 相当于模板虚拟机,后序再想安装时直接克隆
2.下载centos7
- 提取码:5l27
- Ctrl+Alt可以切出鼠标
- 此处需要统一许可(忘记截图)
- 也可以切换成图形界面,不切也没关系,继续向下
- 作用
1.笔记本主机IP为设置自动获取,不管什么情况下,不受虚拟机影响,只要连接外网就可以正常上网 2.只要笔记本主机可以正常访问外网,启动虚拟机中的CentOS 7系统就可以正常访问外网,无需再进行任何设置 3.虚拟机设置为固定IP,不管主机在什么网络环境下,是断网环境,还是连接任何网段访问外网的环境下,虚拟机的IP都固定不变,而且使用终端连接,始终不变,正常连接 4.虚拟机的固定IP可以按照自己想设置的IP地址网段随意设置,比如我就想设置固定IP为192.168.10.100
- 配置原理
2.设置VM的IP
- 设置虚拟机的网络连接方式
- 这一步有的机器可能没有
- 修改子网IP,实现自由设定固定IP,1网段无法成功(第三位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 restart5.检验配置是否成功
- 查看修改后的固定IP
- 测试虚拟机中的CentOS 7系统是否能连外网
- 测试本机是否能ping通虚拟机的固定IP
- sftp安全文件传送协议,传输文件的安全网络加密方法
- 为了上传文件到虚拟机系统
2.确认已安装好ssh服务 3.配置sftp
- 给出部分命令供复制
Match Group sftp ChrootDirectory /usr/sftp ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no4.检验配置是否成功
- 进入xftp
1.systemctl disable firewalld.service 取消开机自启动防火墙 2.systemctl status firewalld时间同步 1.配置
- 报错
- 解决
- 删除所有(之前没有装过jdk)
- 给出部分命令供复制
1.rpm -qa | grep jdk 2.yum -y remove
- 检验是否删除
- 若解压后的文件名字太长,最好重命名(自己百度以下相关命令)
- 给出部分命令供复制
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 dn32.配置windows中的 C:WindowsSystem32driversetchosts 克隆虚拟机,重复以上-打开终端-后的部分步骤 1.克隆虚拟机
- 关闭虚拟机
- 克隆虚拟机
- 主机名,固定IP等是需要修改的
- 具体我也忘记统计了
- 可以自己试一试,若发现已经配置过了,直接跳过该配置
- 克隆后无法同时开启四台虚拟机
- 解决
- 原理
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
- 在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/profile2.修改hadoop-2.7.1/etc/hadoop/hadoop-env.sh中的JAVA_HOME
- 给出部分命令供复制
4.配置hadoop-2.7.1/etc/hadoop/hdfs-site.xmlfs.defaultFS hdfs://node1:9000/ //注意hadoopdata目录不存在,由hadoop生成 hadoop.tmp.dir /opt/hadoopdata
- 给出部分命令供复制
5.hadoop-2.7.1/etc/hadoop/slaves中 指定三台DNdfs.replication 3 //注意hadoopdata目录不存在,由hadoop生成 dfs.namenode.secondary.http-address node2:50090
- 如不指定,则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.格式化
- 每次格式化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
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.out3.启动成功后,查看进程 最后测试是否配置完毕 1.namenode查看
- 注意防火墙是否开放50070端口
- 关闭防火墙
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/



