Hadoop安装
部署模式
Hadoop部署模式有:
- 本地模式
- 伪分布模式
- 完全分布式模式
- HA完全分布式模式
区分的依据是NameNode、DataNode、ResourceManager、NodeManager等模块运行在几个JVM进程、几个机器。
模式名称 | 各个模块占用的JVM进程数 | 各个模块运行在几个机器数上 |
---|---|---|
本地模式 | 1个 | 1个 |
伪分布模式 | N个 | 1个 |
完全分布式模式 | N个 | N个 |
HA完全分布式 | N个 | N个 |
1、本地模式
- 本地模式是最简单的模式,所有模块都运行与一个JVM进程中,使用的本地文件系统,而不是HDFS;
- 本地模式主要是用于本地开发过程中的运行调试用。
- 下载hadoop安装包后不用任何设置,默认的就是本地模式。
- 运行hadoop自带的wordcount例子在本地模式下测试mapreduce,输出文件是在本地。输出目录中有_SUCCESS文件说明JOB运行成功,part-r-00000是输出结果文件。
2、伪分布模式
- 学习Hadoop一般是在伪分布式模式下进行。
- 这种模式是在一台机器上各个进程上运行Hadoop的各个模块;
- 伪分布式的意思是虽然各个模块是在各个进程上分开运行的,但是只是运行在一个操作系统上的,并不是真正的分布式。
3、完全分布式模式
完全分布式模式才是生产环境采用的模式,Hadoop运行在服务器集群上,生产环境一般都会做HA,以实现高可用。
4、HA完全分布式模式
HA是指高可用,为了解决Hadoop单点故障问题,生产环境一般都做HA部署。
下载安装
下载:
http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.13.0.tar.gz
解压:
[hadoop@master bigdater]$ tar -zxvf softs/hadoop-2.6.0-cdh5.13.0.tar.gz
创建数据保存文件夹 hdfs:
[hadoop@master hadoop-2.6.0-cdh5.13.0]$ mkdir hdfs
配置 xxx-env.sh 文件
配置hadoop-env.sh:
- 修改JAVA_HOME路径
- 修改HADOOP_PID_DIR路径
配置mapred-env.sh:
- 修改HADOOP_MAPRED_PID_DIR路径
配置yarn-env.sh:
- 修改YARN_PID_DIR路径
配置基本环境变量_core-site.xml文件
1、fs.defaultFS参数配置的是HDFS的地址
<property> <name>fs.defaultFS</name> <value>hdfs://master.com</value> 或 <value>file://master.com </value> 或 <value>hdfs://master.com:9000</value> 或 <value>hdfs://master.com:8020</value> </property>
2、hadoop.tmp.dir配置的是Hadoop临时目录
<property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/bigdater/hadoop-2.6.0-cdh5.13.0/hdfs/tmp</value> </property>
提示:
比如:HDFS的NameNode数据默认都存放这个目录下,查看*-default.xml等默认配置文件,就可以看到很多依赖${hadoop.tmp.dir}的配置。
默认的hadoop.tmp.dir是/tmp/hadoop-${user.name},此时有个问题就是:
NameNode会将HDFS的元数据存储在这个/tmp目录下,如果操作系统重启了,系统会清空/tmp目录下的东西,导致NameNode元数据丢失,是个非常严重的问题,所有我们应该修改这个路径。
配置基本环境变量_hdfs-site.xml文件
- dfs.replication 配置的是HDFS存储时的备份数量,【因为这里是伪分布式环境只有一个节点,所以这里设置为1。】
- dfs.namenode.name.dir 存贮在本地的名字节点数据镜象的目录,作为名字节点的冗余备份
- dfs.datanode.data.dir 数据节点的块本地存放目录
- dfs.permissions.enabled 文件操作时的权限检查标识
- dfs.webhdfs.enabled 访问namenode的hdfs使用50070端口,访问datanode的webhdfs使用50075端口。
- 访问文件、文件夹信息使用namenode的IP和50070端口;
- 访问文件内容或者进行打开、上传、修改、下载等操作使用datanode的IP和50075端口。
- 注意:要想不区分端口,直接使用namenode的IP和端口进行所有的webhdfs操作,就需要在所有的datanode上都设置hdfs-site.xml中的dfs.webhdfs.enabled为true。
配置基本环境变量_mapred-site.xml文件
- 复制mapred模板文件生成一个mapred-site.xml
- 添加mapreduce框架模型,默认是local,此处必须设置为yarn
配置基本环境变量_yarn-site.xml文件
配置NodeManager:
- yarn.nodemanager.aux-services 配置了yarn的默认混洗方式,选择为mapreduce的默认混洗算法。
- yarn.nodemanager.aux-services.mapreduce_shuffle.class
配置ResourceManager
- yarn.resourcemanager.hostname 指定了Resourcemanager运行在哪个节点上。
打印mapreduce日志
- yarn.log-aggregation-enable默认是false
<property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property>
配置datanode相关变量slaves文件
- 存放datanode的列表
- 一行一个ip地址即可,此处是伪分布式,只有一台
配置hadoop相关环境变量
export HADOOP_HOME=/home/hadoop/bigdater/hadoop-2.6.0-cdh5.13.0 export HADOOP_PREFIX=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export HADOOP_HDFS_HOME=$HADOOP_HOME export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_YARN_HOME=$HADOOP_HOME export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
注意:[hadoop@master hadoop]$ source ~/.bash_profile 使得配置生效
验证
[hadoop@master hadoop]$ hadoop version