1 官网地址:hadoop.apache.org
hadooP是一个应用java语言实现的软件框架,再由大量的廉价计算机组成的集群中运行海量数据的分布式并行计算框架,它可以让应用程序支持上千个节点和pb级的数据,主要由分布式文件存储系统hdfs和分布式并行计算框架mapreduce
hadoop的体系架构:
hdfs (存储海量数据 分布式 安全性) yarn (分布式资源管理框架 cpu 内存 磁盘) mapreduce()
【Hadoop三种运行模式】
Local (Standalone) Mode 本地模式 无需任何守护进程,所有程序在单个jvm执行 开发人员debug调试使用
Pseudo-Distributed Mode 伪分布式 将所有的守护进程运行在一个机器上 开发人员debug调试使用
Fully-Distributed Mode 完全分布式(集群)不同节点运行在不同的机器上 生产环境使用
准备工作:
linux环境 虚拟机的搭建
BOOTPROTO=staic
防火墙和安全子系统
【Hadoop环境部署-JDK部分】
1、先修改权限chown -R mxj:mxj /opt/
2、解压JDK到指定的目录下,目录任意,建议不要装在某个用户主目录下
tar -zxvf jdk-7u67-linux-x64.tar.gz -C /opt/modules/
3、添加环境变量
删除linux自带jdk 查看 rpm -q|grep 'jdk' rm- rf 删除
修改vi /etc/profile文件,配置jdk环境变量#JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile生效文件
4、验证是否配置成功:java -version
jps命令可以查看java 进程
echo $JAVA_HOME
【Hadoop伪分布式环境部署-Hadoop部分】
1、解压Hadoop到指定目录下
tar -zxvf hadoop-2.5.0.tar.gz -C /opt/modules/
2、清理Hadoop的目录,将hadoop/share/doc目录删除,节省磁盘空间,通过这个命令查看df -h
3、修改hadoop/etc/hadoop/hadoop-env.sh文件
修改hadoop/etc/hadoop/mapred-env.sh文件
修改hadoop/etc/hadoop/yarn-env.sh文件
指定Java安装路径
export JAVA_HOME=/opt/modules/jdk1.7.0_67
4、注意:hadoop中的四个核心模块对应四个默认配置文件
指定默认的文件系统为HDFS,文件系统的访问入口,namenode所在的机器
9000端口是早期Hadoop 1.x使用的,现在Hadoop 2.x使用的是8020
端口号用于节点直接内部通信,使用RPC通信机制
5、修改hadoop/etc/hadoop/core-site.xml文件
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata-01:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-2.5.0/data/tmp</value>
</property>
6、注意:/tmp表示临时存储目录,系统每次重启会按照脚本预先设置好的删除里面的文件
重新自定义系统生成的文件路径,/tmp会被清空,无法保证数据文件安全性
7、修改hadoop/etc/hadoop/hdfs-site.xml文件
指定HDFS文件存储的副本数个数,默认是3个,这里是单台机器就设置为1,这个数字要小于datanode的节点数
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
8、修改hadoop/etc/hadoop/slaves文件
-》指定从节点的机器位置,添加主机名即可 hostname
bigdata-01
9、格式化namenode
bin/hdfs namenode -format
10、启动相关的守护进程命令
sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start datanode
11、查看HDFS外部UI界面
bigdata-04或者IP地址 跟上50070端口号,外部通信http bigdata-01:50070
12、测试HDFS环境
创建文件夹,HDFS中有用户主目录的概念,和Linux一样
bin/hdfs dfs -mkdir -p ibf_test/iuput
13、上传文件到HDFS
bin/hdfs dfs -put etc/hadoop/core-site.xml /user/mxj/mxj_test/input
14、读取HDFS的文件
bin/hdfs dfs -text /core-site.xml
15、下载文件到本地(指定下载到哪里,同时可以重命名成get-site.xml)
bin/hdfs dfs -get /core-site.xml /home/mxj/get-site.xml
16、删除
bin/hadoop fs -rm -r /user/mxj/data
【HDFS的缺陷】:
-》HDFS存储的文件是不能够被修改的
-》HDFS不支持多用户并发写入
-》HDFS不适合存储大量小文件
【namenode】元数据存储在内存,接受用户操作请求,维护文件系统的目录结构,管理文件与block之间的关系
block和datanode之间的关系,块存储管理,在整个hdfs集群中有且唯一
【datanode】存储文件,文件被分成block块存储在磁盘上,为了保证数据安全性,文件会有多个副本书,并且周期性的向namenode节点报告存储了哪些block(心跳机制)