部署hadoop集群(完全分布式)
前提条件
部署四台服务器:node1,nide2,node3,node4有以下条件
服务器 | nameNode | dateNode |
---|---|---|
node1 | ✔ | |
node1 | ✔ | |
node3 | ✔ | |
node4 | ✔ |
安装hadoop
1.上传hadoop安装包
2.在所有机器上解压
tar -zxf hadoop-2.6.5.tar.gz -C /opt
3.配置全局环境变量
vi /etc/profile
添加两行记录:
export HADOOP_PREFIX=/opt/hadoop-2.6.5
export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin
复制到其他机器上
for node in node2 node3 node4;do scp /etc/profile $node:/etc/;done
在所有机器上执行执行. /etc/profile
让配置生效
source /etc/profile
修改配置文件
1.配置hadoop使用的JDK
修改/opt/hadoop-2.6.5/etc/hadoop/hadoop-env.sh
vi /opt/hadoop-2.6.5/etc/hadoop/hadoop-env.sh
添加
export JAVA_HOME=/usr/java/jdk1.8.0_172-amd64
2.NameNode的slaves
vi /opt/hadoop-2.6.5/etc/hadoop/slaves
添加
node2
node3
node4
3.core-site.xml
vim cd /opt/hadoop-2.6.5/etc/hadoop/core-site.xml
添加
<configuration>
<!-- 指定namenode的位置:在node1上的9000端口发布一个hdfs协议的服务,用于和datanode以及客户端以及secondarynamenode通信 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<!-- 指定该路径,该路径决定了datanode、namenode以及secondarynamenode放数据的目录 dfs.namenode.name.dir dfs.datanode.data.dir dfs.namenode.checkpoint.dir -->
<property>
<name>hadoop.tmp.dir</name>
<value>/var/hadoop/full</value>
</property>
</configuration>
4.hdfs-site.xml
vim cd /opt/hadoop-2.6.5/etc/hadoop/hdfs-site.xml
添加
<configuration>
<!-- 指定block默认副本个数 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!--指定secondarynamenode的http服务所在的主机和端口号,同时也就指定了secondarynamenode所在的主机-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node2:50090</value>
</property>
</configuration>
5.拷贝到其他机器
将/opt/hadoop-2.6.5/etc/hadoop/* 网络拷贝到node2node3node4上
cd /opt/hadoop-2.6.5/etc/hadoop/
scp -r * node2:`pwd`
scp -r * node3:`pwd`
scp -r * node4:`pwd`
初始化HDFS
在node1上执行格式化操作:
hdfs namenode -format
hdfs namenode -format
启动集群
启动集群:
在node1到node4上的任意一台服务器都可以执行:
start-dfs.sh
jps
测试
上传文件
hadoop fs -put /root/jdk* hdfs://node1:9000/root
停止集群
停止集群:
在node1到node4上的任意一台服务器都可以执行:
stop-dfs.sh
stop-dfs.sh
如果发生异常,看日志:/opt/hadoop-2.6.5/logs