目标
- 掌握VMware安装Centos7系统
- 掌握Hadoop集群搭建
- 掌握相关软件的安装
- 知道常见问题的处理
1 VMware安装CentOS7
1.1 安装VMware15
关注公众号:EZ大数据,回复VM获取VMware15安装包及激活密钥
- 扩展:Bridged、NAT、Host-only的区别
- Bridged(桥接模式):适用于办公、局域网环境,生产环境常用。局域网中的一台独立主机,可以访问网内任何一台机器,不过需要自己商铺欧东配置IP地址等。
- NAT(网络地址转换模式):适用于家庭环境(没有路由器)。可以实现在虚拟系统里访问互联网,由宿主机直接进行转换进行联网,位于虚拟机的VMnet8子网内。
- Host-only(独立主机模式):不能联网,只能和宿主机联网,位于虚拟机的VMnet1子网内。
1.2 Centos7安装
-
安装系统
-
设置静态IP
重启网络:service network restart
路径:/etc/sysconfig/network-scripts/路径下的ifcfg-ens33文件
重点信息,如下:
BOOTPROTO=static ONBOOT=yes IPADDR=192.168.xxx.200 NETMASK=255.255.255.0 GATEWAY=192.168.xxx.2 DNS1=114.114.114.114 DNS2=8.8.8.8
-
关闭防火墙
firewall-cmd --state,查看默认防火墙状态(关闭后显示notrunning,开启后显示running) systemctl stop firewalld.service,停止firewall systemctl disable firewalld.service,禁止firewall开机启动
-
设置共享文件夹(推荐FTP上传,更EZ)
-
网络异常问题
Failed to start LSB: Bring up/down networking. # 解决方案:禁用NetworkManager systemctl stop NetworkManager systemctl disable NetworkManager
2 Hadoop集群搭建(完全分布式)
Hadoop运行模式:本地模式、伪分布式模式、完全分布式模式。
注:本文主要说完全分布式的安装,以下配置,需要在VMware中配置三台机器:master、slave1、slave2,需要关闭防火墙、设置静态IP、修改主机名字。
相应的硬件配置(内存、硬盘容量)自己根据机器情况来设定。
2.1 Hadoop2.7.7安装
官方文档:hadoop.apache.org/docs/r2.7.7…
-
卸载系统自带Java
java -verison rpm -qa | grep jdk 除.noarch,其余全部删除 rpm -e --nodeps XXX
-
修改hostname
# 修改主机名 hostnamectl set-hostname xxx # 设置master和slave1,slave2关系 # 添加salve1,slave2的ip和hostname vim /etc/hosts
-
添加环境变量
# 对当前用户生效 vim ~/.bash_profile # 对所有用户生效 vim /etc/profile # 执行生效命令 source ~/.bash_profile or source /etc/profile
-
免密登录
免密登录原理如下:
- 创建公钥/私钥
ssh-keygen -t rsa # 然后yes一路回车即可
- 创建authorized_keys文件并修改权限为600
cd .ssh touch authorized_keys chmod 600 authorized_keys
- 将公钥追加到authorized_keys文件中去
# 分别master、slave1、slave2的公钥都追加到authorized_keyscat id_rsa.pub >> authorized_keys# 测试登录ssh master/slave1/slave2
-
重要目录
- bin:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
- etc:Hadoop的配置文件目录,存放Hadoop的配置文件
- lib:存放Hadoop的本地库(对数据进行压缩解压缩功能)
- sbin:存放启动或停止Hadoop相关服务的脚本
- share:存放Hadoop的依赖jar包、文档和官方案例
2.2 配置Hadoop
-
修改配置
-
修改core-site.xml配置tmp目录
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> <description>HDFS的URI,文件系统://namenode标识:端口号</description> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/amos/SoftWare/hadoop-2.7.7/hdfs/tmp</value> <description>namenode上本地的hadoop临时文件夹</description> </property> <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> </configuration>
-
修改hadoop-env.sh配置JAVA_HOME
export JAVA_HOME=/home/amos/SoftWare/jdk1.8.0_251
-
修改hdfs-site.xml配置dfs/name,dfs/data
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/home/amos/SoftWare/hadoop-2.7.7/hdfs/name</value> <description>namenode上存储hdfs名字空间元数据 </description> </property> <property> <name>dfs.datanode.data.dir</name> <value>/home/amos/SoftWare/hadoop-2.7.7/hdfs/data</value> <description>datanode上数据块的物理存储位置</description> </property> <property> <name>dfs.replication</name> <value>3</value> <description>副本个数,配置默认是3,应小于datanode机器数量</description> </property> </configuration>
-
修改mapred-site.xml配置yarn名称
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> <description>指定运行mapreduce的环境是yarn,与hadoop1截然不同的地方</description> </property> <!--hadoop历史服务器--> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> <description>MR JobHistory Server管理的日志的存放位置</description> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> <description>查看历史服务器已经运行完的Mapreduce作业记录的web地址,需要启动该服务才行</description> </property> <property> <name>mapreduce.jobhistory.done-dir</name> <value>/mr-history/done</value> <description>MR JobHistory Server管理的日志的存放位置,默认:/mr-history/done</description> </property> <property> <name>mapreduce.jobhistory.intermediate-done-dir</name> <value>/mr-history/tmp</value> <description>MapReduce作业产生的日志存放位置,默认值:/mr-history/tmp</description> </property> <property> <name>yarn.app.mapreduce.am.staging-dir</name> <value>/mr-history/hadoop-yarn/</value> <description>指定applicationID以及需要的jar包文件等</description> </property> <property> <name>mapreduce.map.memory.mb</name> <value>2048</value> <description>每个Map任务的物理内存限制</description> </property> <property> <name>mapreduce.reduce.memory.mb</name> <value>2048</value> <description>每个Reduce任务的物理内存限制</description> </property> </configuration>
-
修改slaves文件配置从节点
slave1slave2
-
修改yarn-site.xml文件配置RM端口等
<configuration><!--打开HDFS上日志记录功能--> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8031</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8035</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>86400</value> </property> </configuration>
-
-
远程拷贝
-
scp:安全拷贝
注:拷贝到slave1、slave2上的文件,需要修改相关文件,如:source ~/.bash_profile
远程拷贝到slave1、slave2(前提是hostname已经设置为slave1和slave2)scp -r hadoop-2.7.7/ root@192.168.60.110:/home/amos/SoftWare
-
rsync:远程同步工具
rsync与scp区别:rsync做文件的复制要比scp速度快,另外rsync只对差异文件做更新,scp是把所有文件都复制过去。
rsync -rvl ./yarn-site.xml root@slave1:/home/amos/test
-
-
格式化&启动
重点:只在第一次启动时格式化NameNode,因为格式化NameNode会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到以往数据。所以,在后期格式化NameNode时,一定要先删除data数据和log日志,然后再格式化NameNode。
-
master节点上格式化
bin/hadoop namenode -format
-
启动集群
注意:NameNode和ResourceManger如果不是同一台机器,不能再NameNode上启动Yarn,应该在ResourceManger所在的机器上启动Yarn。
sbin/start-all.sh # jps查看 若有如下则成功 # jps是JDK中的命令,不是Linux命令。 4464 ResourceManager 4305 SecondaryNameNode 4972 Jps 4094 NameNode
-
jps查看
# master节点:16747 Jps16124 NameNode16493 ResourceManager16334 SecondaryNameNode# slave1节点:10485 DataNode10729 Jps10605 NodeManager# slave2节点:10521 NodeManager10653 Jps10399 DataNode
-
2.3 疑难解决
-
process information unavailable
普通用户启动了对应的程序后,root 用户执行了kill 命令,导致进程出现了这种状态。也就是不同账号之间kill进程时,可能会造成这种现象。用户启动了一个java进程,但是用root用户去kill,虽然杀掉了,但是查看进程时偶尔就会出现)
ll /tmp/|grep hsperfdata rm -rf /tmp/hsperfdata*
-
关闭安全模式
hdfs dfsadmin -safemode leave
3 总结
万事开头难,我一直都认为任何项目开发,最初的安装配置是最最麻烦的。
本篇文章主要总结VMware安装CentOS7以及Hadoop的安装配置,回想当初我自己摸索,期间遇到各种各样的坑,然后花了快两天掉了N多根头发才彻底搞定。说起来,本文所讲的安装方面的坑还只是一部分,有些很容易百度的就没必要在这里阐述。
发现问题,总结思考,然后尝试自己解决问题,进步才会明显。
好了,今天就到这里,拜了个拜~