《Hadoop 2》--Hadoop的伪分布式集群搭建,
一、伪分布式的安装
1、伪分布式的概念
在一台主机上模拟多个数据存储节点,每个线程都是一个独立的程序,使用的都是独立的JVM.
存储的文件系统为分布式文件系统(HDFS).作用是用于对MapReduce程序的调试。
2、准备条件:
CentOS6.8/6.5,JDK1.8,Hadoop2.7.3,SSH
3、安装步骤
(1)安装CentOS6.8.(如果有现成的系统,可以进行克隆)
选择了克隆方式(完整克隆,CentOS_6.8_64_master1)
(2)修改网卡(对克隆的新机器) NAT模式
--1、切换root用户
vim /etc/udev/rules.d/70-persistent-net.rules
注释掉 eth0这一行
修改 eth1为eth0 ,记忆mac地址
--2、vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改mac地址(1里需要记忆的)
修改启动项为yes
修改成static
追加 IPADDR
NETMASK
GATEWAY
DNS1
--3、重启(service network restart 命令如果不好使,请重启)
(3)修改主机名和域名解析
sudo vim /etc/sysconfig/network
hostname=master1
sudo vim /etc/hosts
ip master1
小知识点:
sudo命令 使普通用户获取超级管理员的权限
--1、使用root用户,修改/etc/sudoers
--2、追加:
hyxy ALL=(ALL) ALL
(4)上传jdk和hadoop压缩包(*.tar.gz)
VMware tools工具的安装:
虚拟机->安装 VMware tools工具->解压缩压缩包到桌面->开启终端->切换root用户->执行可执行文件
->一路回车
共享文件夹的设置:
点击虚拟主机->设置->选项->共享文件夹-->启动-->选择window系统上要共享的文件夹。
cd /mnt/hgfs/...
cp .../jdk-8u172-linux-x64.tar.gz /home/hyxy/apps
cp .../hadoop-2.7.3.tar.gz /home/hyxy/apps
(5)解压缩
tar -zxvf jdk-8u172-linux-x64.tar.gz
tar -zxvf hadoop-2.7.3.tar.gz
(6)创建软链接
ln -s hadoop-2.7.3 hadoop
ln -s jdk1.8.0_172/ jdk
(7)配置环境变量
vim ~/.bash_profile
#jdk environment
#hadoop environment
(8)重新加载配置文件
source ~/.bash_profile
(9)修改hadoop的配置文件
修改 $HADOOP_HOME/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/home/hyxy/apps/jdk
修改 $HADOOP_HOME/etc/hadoop/core-site.xml
<property>
<name>fs.defaultFS</name> hdfs的默认访问地址
<value>hdfs://localhost:9000</value> 端口号:9000 在hadoop1.x的默认使用的是8020
</property>
修改 $HADOOP_HOME/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.replication</name> 属性:副本数量
<value>1</value> 副本值
</property>
(10)设置ssh无密码登录认证
(在真正的集群中,master主机需要管理其他节点上的守护进程,如开启或者是关闭,有密码设置时,效率比较低
可以设置无密码登录,进行操作)
原理:如果master想无密码登录其中一台机器slave.那么master机器上应该生成一对密钥(公钥和私钥),然后
master将自己的公钥发送给slave。当master想无密码登录slave时,slave就是生成一串字符,经过公钥加密后
发送给master.然后master使用私钥解密,再发送给slave。slave进行校验,如果一致,master就可以无密登录了。
--1、生成一对密钥:
ssh-keygen -t rsa ->一路回车
此时:私钥保存在了~/.ssh/id_rsa
公钥保存在了~/.ssh/id_rsa.pub
--2、将公钥发送到另一台机器中的~/.ssh/authorized_keys :
authorized_keys的权限:600
(11)格式化namenode进程(格式化前:建议重启)
hdfs namenode -format
格式化的目的:主要就是生成集群ID(clusterid),块池id(blockPoolId),创建fsimage镜像文件和editlog文件
(12)启动相关守护线程,开启集群
start-dfs.sh
可以使用jps指令,查询被开启的守护进程名称
(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/*