一、为分布式模式
配置:
1、配置env结尾的配置文件的java,因为远程启动不会加载本地的配置的java_home
hadoop-env.sh、mapred-env.sh、yarn-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64
2、配置 etc/hadoop/core-site.xml:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://node01:9000</value> </property> <!--hadoop.tmp.dir默认放到 /tmp/hadoop-${user.name}里面,当内存不够时候会自动删除tmp里面的数据,需要改为var, dfs.namenode.name.dir、dfs.datanode.data.dir、dfs.namenode.checkpoint.dir等值都是依赖与该文件的,会造成数据丢失--> <property> <name>hadoop.tmp.dir</name> <value>/var/hadoop/local</value> </property> </configuration>
hadoop.tmp.dir目录下存放block块数据,因为datanode的存储位置依赖于hadoop.tmp.dir,
dfs.datanode.data.dir=file://${hadoop.tmp.dir}/dfs/data dfs.namenode.name.dir=file://${hadoop.tmp.dir}/dfs/name dfs.namenode.checkpoint.dir=file://${hadoop.tmp.dir}/dfs/namesecondary |
查看文件的每个block存放的节点,存到下面的地址(/var/hadoop/local 是hadoop.tmp.dir的值):
/var/hadoop/full/dfs/data/current/BP-376231456-192.168.230.221-1548113761944/current/finalized/subdir0/subdir0
3、配置etc/hadoop/hdfs-site.xml:
<configuration> <property> <name>dfs.replication</name> <!--单机模式副本数必须是1,而默认是3,如果是不配置,默认为3则会报错,因为副本不能放到同一个节点--> <value>1</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>node01:50090</value> </property> </configuration>
4、配置datanode节点etc/hadoop/slaves:
node01
5、执行命令
5.1、格式化文件系统
$ bin/hdfs namenode -format
格式化成功后,则hadoop.tmp.dir配置的目录下/var/hadoop/local/dfs/name/current可以看到clusterID=CID-781c4db9-8e00-47ca-a54a-63504ce553d5,后面namenode和datanode就是通过该clusterID进行通信的。
5.2、开始nameNode和datanode
$ sbin/start-dfs.sh
5.3、通过web查看
二、完全分布式模式
节点分布:
1、四个节点免密钥登陆
2、之后和单机模式模式一样,不同的地方
etc/hadoop/core-site.xml:的hadoop.tmp.dir的值为/var/hadoop/full
etc/hadoop/hdfs-site.xml:的dfs.namenode.secondary.http-address的值为:node02:50090
etc/hadoop/slaves 的值改为:node02,node03,node04
3、参考单节点格式化文件系统
4、参考单节点启动hdfs