一.Hadoop的组成:
1)HDFS 分布式文件系统
2)MapReduce 分布式的离线并行计算框架
3)Hadoop YARN:作业调度与集群资源管理的框架
4)支持其他模块的工具模块
二:Hadoop运行环境的搭建:完成以下8步即可
1.虚拟机网络模式设置为NAT
2.克隆虚拟机
3.修改为静态ip
2)修改IP地址
[[email protected] /]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
需要修改的内容有5项:
IPADDR=192.168.1.101
GATEWAY=192.168.1.2
ONBOOT=yes
BOOTPROTO=static
DNS1=192.168.1.2
修改后 :wq
保存退出
3)执行service
network restart
4)如果报错,reboot,重启虚拟机
4.修改主机名
1.hostname 查看主机名
2.vim /etc/sysconfig/network 更改主机名
3.vim /etc/hosts
添加如下内容
192.168.83.102 hadoop01
4.reboot重启
5.关闭防火墙
查看防火墙状态 service iptables status
关闭防火墙(永久关闭防火墙) chkconfig iptables off
6.在opt目录下创建文件
1.添加新用户
adduser chenyao
passwd chenyao 密码 回文
2.将新用户设置成和root权限相同
vim /etc/sudoers
在里面添加 chenyao ALL=(ALL) ALL
保存退出
即使设置成和root权限相同也无法创建文件夹,在root权限下创建文件夹,然后再修改文件的所有者
[[email protected] ~]# su chenyao
[[email protected] root]$ mkdir model
mkdir: 无法创建目录"model": 权限不够
[[email protected] root]$
3.在opt目录下创建文件夹model software
mkdir model
mkdir software
4.修改文件夹的所有者
chown chenyao model
chown chenyao software
7.安装jdk
1)卸载现有jdk
(1)查询是否安装java软件:
rpm -qa|grep java
(2)如果安装的版本低于1.7,卸载该jdk:
rpm -e软件包
2)用filezilla工具将jdk、Hadoop-2.7.2.tar.gz导入到opt目录下面的software文件夹下面
3)在linux系统下的opt目录中查看软件包是否导入成功。
[[email protected]]# cd software/
[[email protected]]# ls
jdk-7u79-linux-x64.gz hadoop-2.7.2.tar.gz
4)解压jdk到/opt/module目录下
tar -zxf jdk-7u79-linux-x64.gz -C /opt/module/
5)配置jdk环境变量
(1)先获取jdk路径:
[[email protected] jdk1.7.0_79]# pwd
/opt/module/jdk1.7.0_79
(2)打开/etc/profile文件:
[[email protected] jdk1.7.0_79]# vi /etc/profile
在profie文件末尾添加jdk路径:
##JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.7.0_79
export PATH=$PATH:$JAVA_HOME/bin
(3)保存后退出:
:wq
(4)让修改后的文件生效:
[[email protected] jdk1.7.0_79]# source /etc/profile
(5)重启(如果java
–version可以用就不用重启):
[[email protected] jdk1.7.0_79]# sync
[[email protected] jdk1.7.0_79]# reboot
6)测试jdk安装成功
[[email protected] jdk1.7.0_79]# java -version
java version "1.7.0_79"
8安装hadoop
1.先安装
2.解压
3.将hadoop添加到环境变量中
cd /etc/profile
##HADOOP_HOME
export HADOOP_HOME=/opt/model/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
4.执行 source /etc/profile
Hadoop的运行模式
1.本地模式(默认模式):不需要启用单独进程,直接可以运行, 测试和开发的时使用
案例1.:统计单词出现的次数
1.[[email protected] hadoop-2.7.2]# mkdir input
将用户的权限改成 chenyao
2.进入etc目录下的hadoop在,将所有.xml文件拷贝到input
cp *.xml /opt/model/hadoop-2.7.2/input
3.进行查询 在hadoop-2.7.2中
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output01 'dfs[a-z.]+'
4.查看输出结果
cat output
案例2:wordcount案例---》统计某些文件中,某些单词组成的个数
1.在/etc/hadoop下创建一个新的文件夹winput
[[email protected] hadoop-2.7.2]$ mkdir winput
2.在wordcount中创建文件夹 wc.input(文件名和后缀名可以随便起)
[[email protected] winput]$ touch wc.input
3.在wc.input文件中 vim wc.input 在里面写单词,有重复的
4.在hadoop-2.7.2中执行
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jarwordcountwcinput
wcoutput
其中 wordcount是计算单词出现的次数
5.cd woutput/
[[email protected] woutput]$ ll
总用量 4
-rw-r--r--. 1 chenyao chenyao 37 1月 28 15:30 part-r-00000
-rw-r--r--. 1 chenyao chenyao 0 1月 28 15:30 _SUCCESS
[[email protected] woutput]$ cat part-r-00000
chenwenyi 3
chenyao 2
zhangyongtai 2
2.伪分布式模式(等同于完全分布式,只有一个节点)
伪分布式有两种:
1.HDFS上运行MapReduce程序
2.YARN上运行MapReduce程序
一:HDFS上运行MapReduce程序
分析需要准备的:
安装jdk,配置环境变量,安装hadoop,配置环境变量,配置集群,启动、测试集群增、删、查,在HDFS上执行wordcount案例
执行步骤: 配置集群之前上面已经发过步骤,以下从配置集群开始
配置集群
1. 配置 hadoop-env.sh 在etc/hadoop下 vim hadoop-env.sh 配置JAVA_HOME
- 配置 core-site.xml
[[email protected] root]$ cd /opt/model/hadoop-2.7.2/etc/hadoop/
[[email protected] hadoop]$ ll
[[email protected] hadoop]$ vim core-site.xml
在里面添加配置---》<!--
指定HDFS中NameNode的地址 -->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
</configuration>
《增加namenode保存的地址》
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
3.配置hdfs-site.xml--->指定hdfs副本的数量
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
启动集群
1.格式化namenode(第一次启动格式化) bin/hdfs
namenode -format
2.启动namenode sbin/hadoop-daemon.sh
start namenode
3.启动datanode sbin/hadoop-daemon.sh
start datanode
操作集群
1.在hdfs文件系统上创建一个input文件夹
[[email protected] hadoop-2.7.2]$ hadoop fs -mkdir -p /user/atguigu/wcinput
其中-p意思是可以创建多级目录
2.将测试文件内容上传到文件系统上
winput/wc.input放到/user/atguigu/wcinput中
3.查看上传的文件是否正确(可以直接下载下来,但是如果文件过大的时候可以直接看)
[[email protected] /]$ hadoop fs -cat /user/atguigu/wcinput/wc.input
4.运行mapreduce程序
[[email protected] hadoop-2.7.2]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/wcinput /user/atguigu/wcoutput
输入文件 /user/atguigu/wcinput
输出文件 /user/atguigu/wcoutput
5.查看输出结果
[[email protected] hadoop-2.7.2]$ hadoop fs -cat /user/atguigu/wcoutput
6.将测试文件内容下载到本地
hadoop fs -get /user/atguigu/wcoutput/p* ./ 将文件下载到当前目录
7.删除输出结果
hadoop fs -rm -r /user/atguigu/wcoutput
二:YARN上运行MapReduce程序
待续。。
3.完全分布式(多个节点一起运行)
待续。。
注1:如果哪里错了,查看日志文件可以分析错误!!
注2:用jps发现没有namenode。
因为文件保存路径的问题,注意路径是mkdir tmp 不是 touch tmp
注3:需要格式化的时候,关掉namenode和datanode后要删掉tmp,logs里面的东西。否则下次datanode会连不上新的namenode