参考尚硅谷hadoop教程
1、部署划分
NameNode:管理文件系统的Namespace,想当于目录,记录了各个数据节点的位置信息
DataNode:文件系统的工作节点,这个后台程序负责把HDFS数据块读写到本地的文件系统。当需要通过客户端读/
写某个 数据时,先由NameNode告诉客户端去哪个DataNode进行具体的读/写操作,然后,客户端直接与这个
DataNode服务器上的后台程序进行通 信,并且对相关的数据块进行读/写操作。
Secondary NameNode:每个集群都有一个Secondary NameNode,并且部署在一个单独的服务器上。Secondary
NameNode不同于NameNode,它不接受或者记录任何实时的数据变化,但是,它会与NameNode进行通信,以便定期
地保存HDFS元数据的 快照。由于NameNode是单点的,通过Secondary NameNode的快照功能,可以将NameNode
的宕机时间和数据损失降低到最小。同时,如果NameNode发生问题,Secondary NameNode可以及时地作为备用
NameNode使用。
ResouceManager:ResourceManage 即资源管理,在YARN中,ResourceManager负责集群中所有资源的统一管理
和分配,它接收来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程
序(实际上是ApplicationManager)。
RM包括Scheduler(定时调度器)和ApplicationManager(应用管理器)。Schedular负责向应用程序分配资
源,它不做监控以及应用程序的状态跟踪,并且不保证会重启应用程序本身或者硬件出错而执行失败的应用程序。
ApplicationManager负责接受新的任务,协调并提供在ApplicationMaster容器失败时的重启功能。
2、配置文件
2.1、默认配置
2.2、自定义配置
更改core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个文件,路径在$HADOOP_HOME/etc/hadoop/下
2.3、配置core-site.xml
<!-- 指定NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:8020</value>
</property>
<!-- 指定hadoop数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-x.x.x/data</value>
</property>
<!-- 配置HDFS网页登录使用的静态用户为wxx -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>wxx</value>
</property>
2.4、hdfs-site.xml配置
<!-- nn web端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop102:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>
2.5、yarn-site.xml配置
<!-- 指定MR走shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
2.6、mapred-site.xml配置
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
3、配置works
vim /opt/module/hadoop-x.x.x/etc/hadoop/workers
hadoop102
hadoop103
hadoop104
不能加任何空格和换行
然后通过xsync将文件copy到服务器
4、格式化
第一次启动集群,需要在namenode服务器进行格式化
hdfs namenode -format
如果配置错误,先停止服务,再删除掉data目录,然后重新格式化
sbin/stop-all.sh
rm -rf data logs
启动hdfs服务
sbin/start-dfs.sh
如果启动错误,查看logs日志,多半是ssh配置有问题或core-site.xml配置有问题
在配置resourcemanager的服务器启动yarn服务
sbin/start-yarn.sh
5、上传文件到DFS
# 在dfs上创建input文件夹
hadoop fs -mkdir /input
# 将文件上传的上述创建的文件
hadoop fs -put $HADOOP_HOME/wxinput/abc.txt /input
#可以在地址查看:http://hadoop102:9870/
#测试yarn,可以在地址查看:http://hadoop103:8088/cluster
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar wordcount /input /wxoutput
6、错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster [2
# 修改mapred-site.xml,添加下面两行
<property>
<name>mapreduce.admin.user.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>