伪分布式的概念
在一台主机上模拟多个数据存储节点,每个线程都是一个独立的程序,使用的都是独立的JVM.
存储的文件系统为分布式文件系统(HDFS).作用是用于对MapReduce程序的调试。
准备条件
CentOS6.8/6.5,JDK1.8,Hadoop2.7.3,SSH,普通用户hyxy,$HOME/apps
(1)安装CentOS6.8.(如果有现成的系统,可以进行克隆)
选择了克隆方式(完整克隆一台虚拟机)
(2)修改网卡( NAT模式)
查看NAT的网关:编辑->虚拟网络编辑器-->VMnet8-->NAT设置
追加
重启(service network restart 命令如果不好使,请重启)
(3)修改主机名和域名解析
前提工作
sudo命令:获取超级管理员的权限
(4)在主目录下创建apps目录,上传jdk和hadoop压缩包(*.tar.gz) 到$HOME/apps
前提工作:
VMware tools工具的安装
虚拟机->安装 VMware tools工具->解压缩压缩包(右键单击VMwareTOOLs.....)到桌面->开启终端->切换root用户
->执行可执行文件(cd vmare.... /vmare....->一路回车 结束后重启
共享文件夹的设置
点击虚拟主机->设置->选项->共享文件夹-->启动-->选择window系统上要共享的文件夹。
检查一下是否已经安装过jdk
rpm -qa | grep java
如果安装过,请卸载(切换root用户:rpm -e --nodeps xxxx,卸载后,重启重新查看)
(5)解压缩
(6)创建软链接
(7)配置环境变量
~/.bash_profile
#jdk environment
#hadoop environment
(8)重新加载配置文件
source ~/.bash_profile
检查是否配置成功
(9)修改hadoop的配置文件
vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
vim $HADOOP_HOME/etc/hadoop/core-site.xml
(10)设置ssh无密码登录认证
(在真正的集群中,master主机需要管理其他节点上的守护进程,如开启或者是关闭,有密码设置时,效率比较低
可以设置无密码登录,进行操作)
原理:如果master想无密码登录其中一台机器slave.那么master机器上应该生成一对密钥(公钥和私钥),然后
master将自己的公钥发送给slave。当master想无密码登录slave时,slave就是生成一串字符,经过公钥加密后
发送给master.然后master使用私钥解密,再发送给slave。slave进行校验,如果一致,master就可以无密登录了。
生成一对密钥:
ssh-keygen -t rsa ->一路回车
此时:私钥保存在了~/.ssh/id_rsa
公钥保存在了~/.ssh/id_rsa.pub
将公钥发送到另一台机器中
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
authorized_keys的权限:600
.ssh的权限:700
(11)格式化namenode进程(格式化前:建议重启)
hdfs namenode -format
格式化的目的:主要就是生成集群ID(clusterid),块池id(blockPoolId),创建fsimage镜像文件和editlog文件
如果想重新格式化:先把 /tmp/* 删除干净。
(12)启动相关守护线程,开启集群
start-dfs.sh
使用jps指令,查询被开启的守护进程名称
关机前,最好stop-dfs.sh一下
(13)案例小测试
1、在分布式文件系统上创建一个目录input
hdfs dfs -mkdir /input
2、将$HADOOP_HOME/etc/hadoop/* 文件上传到 分布式文件系统
hdfs dfs -put $HADOOP_HOME/etc/hadoop/*-site.xml /input
3、统计词频
hadoop jar /home/hyxy/apps/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep /input /output 'dfs[a-z.]+'
4、查看统计结果
hdfs dfs -cat /output/*
localhost:50070
http://localhost:50070/