Hadoop是一个开源框架,允许使用简单的编程模型在跨计算机集群的分布式环境中存储和处理大数据,Hadoop2.0由三部分组成,分别是HDFS(分布式文件系统)、MapReduce(海量数据的计算系统)、Yarn(集群资源管理框架)
HDFS 包括NameNode、DataNode、SecondaryNameNodeNameNode:1、维护 管理文件系统的名字空间(元数据信息)2、负责确定指定的文件块到具体的Datanode结点的映射关系。3、维护管理 DataNode上报的心跳信息DataNode:1、负责工作,进行读写数据2、周期向NameNode汇报3、负责管理用户的文件数据块(一个大的数据拆分成多个小的数据块)SecondaryNameNode:负责辅助NameNode管理工作
Yarn 包括 ResourceManager、NodeManagerResourceManager:1、拥有系统所有资源分配的决定权2、负责集群中所有应用程序的资源分配,拥有集群资源主要、全局视图NodeManager:1、负责与ResourceManager通信2、负责启动和管理应用程序的container的生命周期,监控它们的资源使用情况(cpu和内存)3、跟踪节点的监控状态,管理日志等。并报告给RM
1.HDFS的安装
# 下载wget https://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.16.2.tar.gztar -zxvf hadoop-2.6.0-cdh5.16.2.tar.gzmv hadoop-2.10.0 /usr/local/mv hadoop-2.10.0 hadoop
下载native
# 下载位置http://dl.bintray.com/sequenceiq/sequenceiq-bin/# 存放位置/usr/local/hadoop/lib/native
tar -xf hadoop-native-64-2.7.0.tar
环境变量配置
vi /etc/profile# 增加内容export HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport YARN_HOME=$HADOOP_HOMEexport HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/nativeexport HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"# 在path后面增加:$HADOOP_HOME/sbin:$HADOOP_HOME/bin# 刷新生效source /etc/profile
免密登录配置
ssh-keygen -t rsacat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
1.2.修改HDFS配置文件
hadoop-env.sh
# jdk的环境配置export JAVA_HOME=/usr/local/jdk8
core-site.xml
# 用于定义系统级别的参数,如HDFS URL、Hadoop的临时目录<configuration><property><!--指定 NameNode的 hdfs 协议文件系统的通信地址--><name>fs.defaultFS</name><value>hdfs://hadoop-master:8020</value></property><property><!--指定 hadoop 存储临时文件的目录--><name>hadoop.tmp.dir</name><value>/home/hadoop/tmp</value></property><property><!--流文件的缓冲区大小--><name>io.file.buffer.size</name><value>131072</value></property></configuration>
hdfs-site.xml
# 如名称节点和数据节点的存放位置、文件副本的个数、文件读取权限等<configuration><property><!--指定dataNode存储block的副本数量,默认值是3个,该值应该不大于4--><name>dfs.replication</name><value>2</value></property></configuration># 后期补其他参数。。。
slaves
hadoop-master
1.3.启动(/usr/local/hadoop/bin)
# 格式化./hdfs namenode -format# 启动./start-dfs.sh# 检查jps# 访问http://192.168.225.133:50079/
9137 DataNode9026 NameNode9390 SecondaryNameNode
2.Hadoop(YARN)环境配置
mapred-site.xml
# Mapreduce参数# 包括JobHistory Server和应用程序参数两部分,# 如reduce任务的默认个数、任务所能够使用内存的默认上下限等<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property></configuration>
yarn-site.xml
# 集群资源管理系统参数# 配置 ResourceManager,NodeManager 的通信端口,web监控端口等<configuration><property><!--配置 NodeManager 上运行的附属服务。需要配置成 mapreduce_shuffle 后才可以在 Yarn 上运行 MapReduce 程序。--><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property></configuration>
启动(/usr/local/hadoop/bin)
# 启动yarn./start-yarn.sh# 验证jps
9137 DataNode9026 NameNode12294 NodeManager12185 ResourceManager9390 SecondaryNameNode
配置文件简介补充
core-site.xml
| 参数名 | 默认值 | 参数解释 |
| fs.defaultFS | hdfs:// | 文件系统主机和端口 |
| io.file.buffer.size | 4096 | 流文件的缓冲区大小 |
| hadoop.tmp.dir | /tmp/hadoop-${user.name} | 临时文件夹 |
hdfs-site.xml
| 参数名 | 默认值 | 参数解释 |
| dfs.namenode.http-address | 0.0.0.0:50070 | 定义NameNode对应的地址和端口 |
| dfs.namenode.secondary.http-address | 0.0.0.0:50090 | 定义SecondaryNameNode对应的HTTP服务器地址和端口 |
| dfs.namenode.name.dir | file://${hadoop.tmp.dir}/dfs/name | 定义DFS的名称节点在本地文件系统的位置 |
| dfs.datanode.data.dir | file://${hadoop.tmp.dir}/dfs/data | 定义DFS数据节点存储数据块时存储在本地文件系统的位置 |
| dfs.replication | 3 | 缺省的块复制数量 |
| dfs.webhdfs.enabled | true | 是否通过http协议读取hdfs文件,如果选是,则集群安全性较差 |
| dfs.namenode.handler.count | 100 | RPC服务器的监听client线程数,如果dfs.namenode.servicerpc-address属性没有配置,则线程会监听所有节点的请求。 |
| dfs.permissions.enabled | false | 当为true时,则允许HDFS的检测,当为false时,则关闭HDFS的检测,但不影响其它HDFS的其它功能。 |
| dfs.permissions | false |
mapred-site.xml
| 参数名 | 默认值 | 参数解释 |
| mapreduce.framework.name | yarn | 取值local、classic或yarn其中之一,如果不是yarn,则不会使用YARN集群来实现资源的分配 |
| mapreduce.jobhistory.address | 0.0.0.0:10020 | 定义历史服务器的地址和端口,通过历史服务器查看已经运行完的Mapreduce作业记录 |
| mapreduce.jobhistory.webapp.address | 0.0.0.0:19888 | 定义历史服务器web应用访问的地址和端口 |
yarn-site.xml
| 参数名 | 默认值 | 参数解释 |
| yarn.resourcemanager.address | 0.0.0.0:8032 | ResourceManager 提供给客户端访问的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等 |
| yarn.resourcemanager.scheduler.address | 0.0.0.0:8030 | ResourceManager提供给ApplicationMaster的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等 |
| yarn.resourcemanager.resource-tracker.address | 0.0.0.0:8031 | ResourceManager 提供给NodeManager的地址。NodeManager通过该地址向RM汇报心跳,领取任务等 |
| yarn.resourcemanager.admin.address | 0.0.0.0:8033 | ResourceManager 提供给管理员的访问地址。管理员通过该地址向RM发送管理命令等。 |
| yarn.resourcemanager.webapp.address | 0.0.0.0:8088 | ResourceManager对web 服务提供地址。用户可通过该地址在浏览器中查看集群各类信息 |
| yarn.nodemanager.aux-services | 通过该配置项,用户可以自定义一些服务,例如Map-Reduce的shuffle功能就是采用这种方式实现的,这样就可以在NodeManager上扩展自己的服务 |
文章转载自Java技术学习笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




