在本机上安装VMware,此处为Vmware压缩包(包括安装包以及注册码)
链接:https://pan.baidu.com/s/1OKYP-UOpAWpcEITQfkVQTA 密码:mwi7
首先进入vmware界面后,workstation->文件->新建虚拟机出现右图界面,里面提示选择安装镜像或者稍后安装。跟着引导一直走,设置内存、占用硬盘空间等。(注:如果用于开发硬盘空间可以开大些,不然只能后面进行硬盘扩容,然后把格式化后将相应的空间挂载在各节点上
有兴趣自己安装一个minimal的同学可以参考此处https://www.kafan.cn/edu/488101.html
1.启动网卡(默认网卡是不启动的)
#vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=no 改为 yes
#service network restart 重启网络
2.配置sshd
mini默认安装sshd,
在 /etc/hosts.deny 和 /etc/hosts.allow 最后都加上一句 sshd:ALL ,保存
#service sshd restart
3.关闭selinux
安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
SELinux 主要由美国国家安全局开发。2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。
SELinux 的结构及配置非常复杂,而且有大量概念性的东西,要学精难度较大。所以我们选择把 SELinux 关闭。
#vi /etc/selinux/config
将 SELINUX=enforcing 改成 SELINUX=disabled,保存。
重启系统 reboot
4.配置yum源
# yum -y install wget //安装下载工具
# cd /etc/yum.repos.d/ //进入yum配置文件目录
# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo //下载网易的源配置文件
导入CentOS-6的GPG证书
#rpm --import http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6 //这句可用可不用
在所有mirrorlist前面加上#,把所有$releasever替换成6,保存
#sed -i '/mirrorlist/d' CentOS-Base-163.repo
#sed -i '/
/,/^$/d' CentOS-Base-163.repo
#sed -i 's/\$releasever/6/' CentOS-Base-163.repo
#sed -i 's/RPM-GPG-KEY-CentOS-5/RPM-GPG-KEY-CentOS-6/' CentOS-Base-163.repo
# mv CentOS-Base.repo CentOS-Base.repo.bak //备份旧的配置文件
# mv CentOS6-Base-163.repo CentOS-Base.repo //把下载的配置文件改名# yum clean all //清理缓存
# yum makecache //更新缓存
# yum update //更新系统
5.安装常用软件包(vim,gcc)
yum -y install vim
yum -y install gcc gcc-c++ make
1、打开虚拟机出现如图错误弹窗
原因:本机的的虚拟化未开启,需要进入bios ,enable VT,使电脑支持虚拟化。
解决方法:进入bios,enable VT如下
2、开机启动不了,卡在进度条,进不去系统
解决方法:左图时按下e,进入系统编辑模式,选定系统后继续按下e,到kernel按e编辑系统开机选项:
去掉rhgb:禁止图片来代替启动过程中的信息(方便观察系统启动进程卡在了哪一步)
在quiet后加1:进入单用户模式(在不能进入多用户系统时以此来调试,如果上一步已经确定卡住的步骤,可以进入的单用户模式停止该进程再重启查看具体的报错日志进行调试)
修改后回车退出,按下b重启
1、自动获取IP地址
虚拟机使用桥接模式,相当于连接到物理机的网络里,物理机网络有DHCP服务器自动分配IP地址。
vi /etc/sysconfig/network-scripts/ifcfg-eth0//进入网卡配置文件
ONBOOT=yes//设置启动网卡
BOOTPROTO=dhcp//此处设置为自动获取ip
2、手动设置ip地址
为了防止异常导致的linux地址段变化,我们有时需要将手动配置linux的ip
vi编辑网卡的配置文件
IPADDR=192.168.4.10//本机ip地址
NETMASK=255.255.255.0//掩码
GATEWAY=192.168.4.1//网关
另外光标移动到”ONBOOT=no”这一行,更改为ONBOOT=yes
“BOOTPROTO=dhcp”,更改为BOOTPROTO=none
设置DNS地址,运行命令 #vi /etc/resolv.conf
添加nameserver=192.168.62.2//表示域名
(注意:每次修改配置完成后记得重启服务呀:service network restart,配完记得ping一下)
b/bin 二进制可执行命令。该目录下存放着普通用户的命令
/dev 系统的设备文件,即设备的驱动程序
/home 用户主目录的基点
/lost-found 这个目录平时是空的,当系统非正常关机而留下的“无家可归”的文件便会储存在这里
/misc 储存着一些特殊的字符的定义
/net 存放着和网络相关的一些文件
/proc 存放着用户与内核的交互信息
/sbin 系统的管理命令,这里存放的是系统管理员使用的程序
/srv 系统启动服务时可以访问的数据库目录
/tmp 临时文件,重启后自动清空
/var 某些大文件的溢出区,比如各种服务的日志文件
/boot 启动linux的核心文件
/etc 系统所有的配置文件都在这个目录中
/lib 存放着和系统运行相关的库文件
/media 存放着可移除的设备,比如软盘,光盘
/mnt 挂载目录,是系统管理员临时安装文件的系统安装点
/opt (option : 自由选择)主要给源码安装软件时选择的安装目录位置
/root 超级用户的目录
/selinux 主要用来加固操作系统,提高系统的安全性
/sys 管理设备文件
/usr 最大的目录,存放着应用程序和文件
在linux系统中通常有0-6,共7个运行级别:
0 停机
1 单用户模式,用于root用户对系统进行维护,不允许其他用户使用主机
2 多用户模式,在该模式下不能使用NFS
3 完全多用户模式,主机作为服务器时通常在该模式下
4 未分配使用
5 图形登录的多用户模式,用户在该模式可进行图形登录界面
6 重新启动
vi /etc/inittab修改系统的运行级别
命令:chkconfig
查看服务启动状态#chkconfig –list 服务名称
设置独立服务的启动状态#chkcofig –level 运行级别列表 服务名称
on|off|reset
//指定可以设置指定服务在指定与运行级别中的启动状态
设置非独立服务的启动状态#chkonfig 服务器 on|off|reset
重新启动服务
常用
ls 显示文件或目录
mkdir 创建目录
cd 切换目录
cat 查看文件内容
cp 拷贝
mv 移动或重命名
rm 删除文件
find 在文件系统中搜索某文件
grep 在文本文件中查找某个字符串
rmdir 删除空目录
pwd 显示当前目录
ln 创建链接文件
more、less 分页显示文本文件内容
ctrl+alt+F1 命令行全屏模式
mount 挂载
系统管理指令:
lsof -i 显示端口占用情况
stat 显示指定文件的详细信息,比ls更详细
whoami 显示当前操作用户
hostname 显示主机名
uname 显示系统信息
top 动态显示当前耗费资源最多进程信息
df 查看磁盘大小 df -h 带有单位显示磁盘信息
ifconfig 查看网络情况
ping 测试网络连通
netstat 显示网络状态信息
man 命令不会用了,找男人 如:man ls
clear 清屏
kill 杀死进程,可以先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程。
压缩包的处理:
gzip
bzip2
tar
用户管理:
userdel 删除用户
adduser 增加用户
groupadd 增加用户组
groupdel 删除用户组
passwd 给用户设置密码
su root 切换到root
其他:
shutdown -h now 立即关机
reboot 关机重启vim使用
startx 开启图形界面
三种基本权限:
R 读 数值表示为4
W 写 数值表示为2
X 可执行 数值表示为1
Hadoop生态图
1、在HDFS中有两种节点,分别是NameNode和DataNode。NameNode负责集群中与存储相关的调度,DataNode负责具体的存储任务。具体来说NameNode维护了整个文件系统的元数据信息,这些信息以两种形式的文件存储,一种是镜像文件(image文件),另一种是编辑日志(edit log)。NameNode会在文件系统启动时,动态地加载这些文件到内存中以响应客户端的读写请求。
2、DataNode:
用来执行具体的存储任务:存储文件块。另外它也会定时的通过心跳向NameNode报告自己的状态(包括存储的文件块的信息)。
3、NameNode的安全模式:
在启动NameNode后,它会进入安全模式,所谓“安全模式”是指,在此期间它会接收DataNode的心跳包及块的状态信息,以此来判断块的副本安全性。在达到一定比例的块副本安全性时,NameNode将退出安全模式。
4、NameNode的安全保障:
NameNode的作用在HDFS的集群中显而易见。一般而言,有两种机制来保证其自身及其上数据的安全。一种是同步转储其上的元数据文件。
5、JobTracker
接受作业提交,监控和控制作业运行,负责将任务分发到TaskTracker节点
6、TaskTracker
控制Map/Reduce任务中当前节点的运行
1.ResourceManager(RM)
RM是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器(Scheduler)和应用程序管理器
2. ApplicationMaster(AM)
用户提交的每个应用程序均包含1个AM,主要功能包括:与RM调度器协商以获取资源(用Container表示);将得到的任务进一步分配给内部的任务;与NM通信以启动/停止任务;监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。
3.NodeManager(NM)
NM是每个节点上的资源和任务管理器,一方面,它会定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态;另一方面,它接收并处理来自AM的Container启动/停止等各种请求。
4. Container
Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。
上图描述了YARN的基本组成结构,YARN主要由ResourceManager、NodeManager、ApplicationMaster(图中给出了MapReduce和MPI两种计算框架的ApplicationMaster,分别为MR AppMstr和MPI AppMstr)和Container等几个组件构成。YARN总体上仍然是Master/Slave结构,在整个资源管理框架中,ResourceManager为Master,NodeManager为Slave,ResourceManager负责对各个NodeManager上的资源进行统一管理和调度。当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManger启动可以占用一定资源的任务。由于不同的ApplicationMaster被分布到不同的节点上。
1、map过程
3、主函数部分实现以及数据流
1、集群基本设置
hostname IP Role
master 192.168.62.102 ResourceManager/NameNode/SecondaryNameNode
slave1 192.168.62.124 NodeManager/DataNode
slave2 192.168.62.125 NodeManager/DataNode
2、 相关下载
(1)JDK下载地址
(2)Hadoop下载
(3)Zookeeper下载
3、 配置hosts
vi /etc/hosts(实际操作时根据自己电脑上的ip配置)
192.168.62.102 master
192.168.62.103 slave1
192.168.62.104 slave2
改好后scp命令进行复制配置文件到其他节点
4、配置ssh免密码登录
ssh-keygen -t rsa
密钥文件位于~/.ssh文件
在Hadoop1上生产一对钥匙,将公钥拷贝到其他节点,包括自己,执行命令:
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
5、相关配置文件修改
core-site.xml修改
fs.default.name// 定义master的URI和端口
hadoop.tmp.dir//临时文件夹,Hadoop的运行时文件存放路径
对hdfs-site.xml修改(主要是用来指定集群中数据块的副本系数)
dfs.name.dir//存贮在本地的NN数据镜象的目录,作为NN的冗余备份
dfs.data.dir//DN数据保存
dfs.replication
dfs.datanode.data.dir
dfs.namenode.name.dir
dfs.webhdfs.enabled
dfs.http.address
对mapred-site.xml修改
mapred.job.tracker//作业跟踪管理器是否和MR任务在一个进程中
mapreduce.framework.name
mapreduce.job.tracker.http.address
mapreduce.task.tracker.http.address
yarn-site.xml
slaves
1、Zookeeper 配置:(也可以跳过这一步骤,使用hbae自带的zookeeper)
(1) Zookeeper服务集群规模不小于三个节点,要求各服务之间系统时间要保持一致。
(2)在m1的usr/local目录下,解压缩zookeeper(执行命令tar –zvxf zookeeper.tar.gz)
(3)设置环境变量
(4)在解压后的zookeeper的目录下进入conf目录修改配置文件
更名操作:mv zoo_sample.cfg zoo.cfg
(5) 编辑zoo.cfg (vi zoo.cfg)
修改dataDir=/usr/local/program/zookeeper/data/
新增server.0=master:2888:3888
server.1=slave1:2888:3888
server.2=slave2:2888:3888
2、HBase配置
(1) 修改文件$HBASE_HOME/conf/hbase-env.shhbase-env.sh(这里HBase_MANAGES_ZK设置为使用自带的zookeeper)