一、集群准备
1、修改主机名
2、修改 IP 地址
3、添加主机名和 IP 映射
4、同步服务器时间
5、关闭防火墙
6、配置免密登录
7、安装JDK
二、集群配置
1、修改配置文件hadoop-env.sh
export JAVA_HOME=/home/jdk1.8.0_181
2、修改配置文件core-site.xml
<!-- 指定hdfs的nameservice为ns 与hdfs-site对应 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns</value>
</property>
<!--指定hadoop数据临时存放目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
<!--指定zookeeper地址-->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop130:2181,hadoop131:2181,hadoop132:2181</value>
</property>
3、修改配置文件hdfs-site.xml
<!--指定hdfs的nameservice为ns,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns</value>
</property>
<!--NameNode配置-->
<!-- ns下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns.nn1</name>
<value>hadoop130:9000</value>
<description>指定第一个NameNode的RPC位置</description>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns.nn1</name>
<value>hadoop130:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns.nn2</name>
<value>hadoop131:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns.nn2</name>
<value>hadoop131:50070</value>
</property>
<!--JournalNode配置-->
<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop130:8485;hadoop131:8485;hadoop132:8485/ns</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/module/hadoop-2.7.2/journaldata</value>
</property>
<!-- 开启NameNode故障时自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!-- 使用sshfence隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///opt/module/hadoop-2.7.2/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///opt/module/hadoop-2.7.2/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 在NN和DN上开启WebHDFS (REST API)功能,不是必须 -->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
4、修改配置文件yarn-site.xml
<!-- 开启RM高可用 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定RM的cluster id -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!-- 指定RM的名字 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 分别指定RM的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hadoop130</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop132</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>hadoop130:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>hadoop132:8088</value>
</property>
<!-- 指定zk集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hadoop130:2181,hadoop131:2181,hadoop132:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--resourcemanager挂了 重启后之前正在运行的任务接着运行-->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<!--resourcemanager 信息放到zookeeper中-->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
<!--<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore</value>-->
</property>
5、修改配置文件mapred-site.xml
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- <property>
<name>mapreduce.jobhistory.address</name>
<value>node2:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node2:19888</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>/home/hadoop/hadoop/hadoopmrsys</value>
<final>true</final>
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/hadoop/hadoop/hadoopmrlocal</value>
<final>true</final>
</property>-->
三、集群操作命令
1、集群启动命令
(1)先启动zookeeper集群
zkServer.sh start
检查是否成功启动
(2)启动journalnode
sbin/hadoop-daemons.sh start journalnode
检查是否成功启动
(3)namenode上执行格式化
bin/hdfs namenode -format
(4)格式化ZKFC
hdfs zkfc -formatZK
(5)启动HDFS
sbin/start-dfs.sh
查看日志是否启动成功
若另外一台服务器namenode没有启动成功,
同步镜像文件:bin/hdfs namenode -bootstrapStandby
再次启动namenode:sbin/hadoop-daemon.sh start namenode
(6)启动yarn
sbin/start-yarn.sh
sbin/yarn-daemon.sh stop resourcemanager
访问hdfs地址:http://hadoop130:50070
访问yarn地址:http://hadoop130:8088
2、集群操作命令
(1)常用
hadoop fs -ls /
hadoop fs -mkdir -p /sanguo/shuguo
hadoop fs -cat /sanguo/shuguo/kongming.txt
hadoop fs -cp /sanguo/shuguo/kongming.txt /zhuge.txt
hadoop fs -mv /zhuge.txt /sanguo/shuguo/
hadoop fs -rm /user/atguigu/test/jinlian2.txt
(2)-moveFromLocal从本地剪切粘贴到hdfs
touch kongming.txt
hadoop fs -moveFromLocal ./kongming.txt /sanguo/shuguo
(3)-appendToFile :追加一个文件到已经存在的文件末尾
hadoop-2.7.2]$ hadoop fs -appendToFile liubei.txt /sanguo/shuguo/kongming.txt
(4)-tail:显示一个文件的末尾
hadoop fs -tail /sanguo/shuguo/kongming.txt
(5)-chgrp 、-chmod、-chown:linux文件系统中的用法一样,修改文件所属权限
hadoop fs -chmod 666 /sanguo/shuguo/kongming.txt
hadoop fs -chown atguigu:atguigu /sanguo/shuguo/kongming.txt
(6)-copyFromLocal:从本地文件系统中拷贝文件到hdfs路径去
hadoop fs -copyFromLocal README.txt /
(7)-copyToLocal:从hdfs拷贝到本地
hadoop fs -copyToLocal /sanguo/shuguo/kongming.txt ./
(8)-get:等同于copyToLocal,就是从hdfs下载文件到本地
hadoop fs -get /sanguo/shuguo/kongming.txt ./
(9)-getmerge :合并下载多个文件,比如hdfs的目录 /aaa/下有多个文件:log.1, log.2,log.3,...
hadoop fs -getmerge /user/atguigu/test/* ./zaiyiqi.txt
(10)-put:等同于copyFromLocal
hadoop fs -put ./zaiyiqi.txt /user/atguigu/test/
(11)-du统计文件夹的大小信息
hadoop fs -du -s -h /user/atguigu/test
hadoop fs -du -h /user/atguigu/test
(12)-setrep:设置hdfs中文件的副本数量
hadoop fs -setrep 10 /sanguo/shuguo/kongming.txt
四、集群常见错误
1、服务器时间没有同步
2、镜像文件没有同步
网友评论