今天记录一下,安装Centos系统以及搭建hadoop集群,相当于虚拟化一个计算机系统,而一个计算机系统包括软件和硬件。
处理器数量一般是2,每个处理器的内核数量看母机window的内核数量。
打开任务管理器,点资源监视器,我的是8个内核。
这样设置一台虚拟机是2*1个内核,待会你开机的虚拟机总的内核数量<母机的内核数量8即可。
比如:待会你要同时开4台虚拟机,那么它的内核总数是4*2=8,没有超过8,就是可以的.
这里虚拟机的内存我给2G。
建议将虚拟机系统内存的可用量设置为2GB,最低不应低于 1GB。当然也没有必要超过2G,在实际的使用中2G已经足够了。在vmware中,虚拟系统的内存是可以更改的, 关键看你虚拟系统是什么版本及需要运行测试哪些软件,感觉慢了就调大一点,但处于运行状态的虚拟机的内存总和不要大于母系统内存的70%。
磁盘我给20G,不够后续可以再升级。
以上就是生成虚拟机电脑硬件清单。
点击完成后,相当于虚拟机电脑硬件已经配置完成了。接下来配置软件。
在此之前,需要检查母机是否打开虚拟化技术。打开任务管理器-->性能
然后点击开启此虚拟机,等待出现以下画面:
软件选择选GNOME桌面
然后点安装位置,选择我要配置分区,完成.
/boot 1G
根目录15G
/boot1G / 15G swap4G 总共20G = 你配置的磁盘容量.
/boot 的文件系统改成ext4 ,最后点完成.
取消启用kdump
点击开始安装,这个页面可以点击root密码,设置root用户密码,然后耐心等待安装。
密码:rootljl.
现在整个操作系统软件安装完毕。
配置vm ip
编辑--》虚拟网络编辑器
点NAT设置
最后点确定,就配置好vm的ip地址了。
接下来配置window10下的ip地址
打开VMnet8的属性,双击ipv4进入ip设置
如果window10下的更改网络适配器中没有出现VMnet8,那么可以去vm下,编辑-->虚拟网络编辑器-->点VMnet8-->更改设置--> 还原默认设置
接下来配置hadoop虚拟机的ip地址
修改主机名称为hadoop100
将主机名hadoop和ip地址192.168.10.100映射, 这样就可以使用hadoop代替写那么长的ip地址了, 这样只要ip地址改变,只需要到 /etc/hosts文件中修改即可。
最后重启,让配置生效
查看ip,可以看到已经生效了
ping外网也ok
主机名也没错
安装epel-release,因为有些rpm包在官方库中找不到。前提是保证可以联网和在root用户下。
kill -9 进程号
关闭服务器防火墙,关闭防火墙服务开机自启动。
systemctl stop firewalld
systemctl disable firewalld.service
创建lin用户,设置密码
useradd lin
password lin
并设置使其具有root权限,方便后期sudo执行root权限的命令。
vim /etc/sudoers
卸载虚拟机自带的jdk,由于我们是桌面版的安装,所以它会自动安装jdk。
重启虚拟机reboot
克隆三台虚拟机
以hadoop100为模板机,克隆出三台虚拟机,由于是原封不动的克隆,所以克隆出来的三台虚拟机,需要对其修改ip地址和主机名称。
注意:克隆前需要关机。
右键虚拟机-->管理-->克隆
下面就是重复的操作,克隆出另外两台hadoop103和hadoop104
接下来就是配置ip地址和主机名称.
第一:开启hadoop102
vim /etc/sysconfig/network-scripts/ifcfg-ens33 修改ip地址.
vim /etc/hostname 修改主机名
vim /etc/hosts 设置ip和主机名映射
最后重启,让设置生效,然后验证主机名和ip有没有变化。
也可以连通外网
然后重复以上操作,同样配置hadoop103和hadoop104
JDK的安装
/opt 目录
optional:“可选择”的意思,作用是安装第三方软件的地方
进入到/opt/software/目录下,准备上传安装包
hadoop3.1.3下载地址: Index of /dist/hadoop/common/hadoop-3.1.3 (apache.org)
jdk8:https://pan.baidu.com/s/1tJVUDqc3YpwygtPM6QxD1w 提取码: 36s2
发现已经安装包已经有了
安装jdk
配置jdk的环境变量
在里面配置:
hadoop的安装
配置hadoop的环境变量。
本地模式运行hadoop
随意写点东西。
统计word.txt中的单词个数
jdk的拷贝
由于我们只在hadoop102中安装了jdk,而hadoop103和hadoop104都需要安装jdk,因此可以在hodoop102中拷贝jdk
开始进行拷贝
hadoop的拷贝
rsync远程同步工具
案例
第一次用scp拷贝,后续有更改用rsync同步即可。
同样操作,将环境变量拷贝到hadoop104中,使命令可以到任何地方使用。
xsync集群分发脚本
进入/bin/目录下,创建xsync脚本
脚本内容:
#! /bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if [ $pcount -lt 1 ]
then
echo No Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
echo ==================== $host ====================
#3. 递归遍历所有目录
for file in $@
do
#4 判断文件是否存在
if [ -e $file ]
then
#5. 获取全路径
pdir=$(cd -P $(dirname $file); pwd)
echo pdir=$pdir
#6. 获取当前文件的名称
fname=$(basename $file)
echo fname=$fname
#7. 通过ssh执行命令:在$host主机上递归创建文件夹(如果存在该文件夹)
ssh $host "source /etc/profile;mkdir -p $pdir"
#8. 远程同步文件至$host主机的$USER用户的$pdir文件夹下
rsync -av $pdir/$fname $USER@$host:$pdir
else
echo $file Does Not Exists!
fi
done
done
免密登录,实现在hadoop102上可以免密登录hadoop103和hadoop104
对自己也需要设置实现免密登录。
同样的操作,在hadoop103和hadoop104上操作一样的步骤,实现对其绵密登录。
刚刚是在lin用户设置的免密登录,切换到root用户就失效了
需要在root用户下重新设置
现在使用xsync分发脚本(复制文件到所有节点的相同目录下/home/lin/)就不需要输入密码了。
集群配置
在hadoop102上配置NameNode,配置core-site.xml文件
fs.defaultFS hdfs://192.168.10.102:8020 hadoop.tmp.dir /opt/moudle/hadoop-3.1.3/data hadoop.http.staticuser.user lin
在hadoop102上配置SecondaryNameNode(2NN),配置hdfs-site.xml文件
dfs.namenode.http-address 192.168.10.102:9870 dfs.namenode.secondary.http-address 192.168.10.104:9868
指定ResourceManager节点,配置yarn-site.xml
yarn.resourcemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname 192.168.10.103 yarn.nodemanager.env-whitelist JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
MapReduce配置文件,配置mapred-site.xml 文件
mapreduce.framework.name yarn
现在以下的部分配置完毕,
还需要在hadoop103和hadoop104上配置,直接使用xsync分发脚本。
验证一下有没有配置成功
启动集群并测试
配置workers
分发workers
启动集群
先初始化
在hadoop102上启动NameNode
验证
在hadoop103上启动ResourceManager
查看每个主机有没有启动
集群的基本测试
上传文件到集群
执行wordcount程序,集群MapReduce操作



