本文记录学习过程,安装全分布式的Hadoop
服务器准备
使用VM快照克隆功能,克隆出4台网络已设置、防火墙关闭、SELINUX关闭、网卡和MAC的映射取消的机器,可参照【Linux学习笔记三:VM下配置模板机和克隆】https://www.jianshu.com/p/0310c24bda69。
全分布分配方案.png建立各节点通讯(hosts)
192.168.197.31 node01
192.168.197.32 node02
192.168.197.33 node03
192.168.197.34 node04
设置时间同步
date -s “xxxx-x-xx xx:xx:xx”
一、JDK安装
见【Hadoop学习笔记一:伪分布式搭建】
二、免密登录(node01可免密登录子节点)
目标:把node01秘钥分发给node02/node03/node04
1.node01配置免秘钥登录
步骤见【Hadoop学习笔记一:伪分布式搭建(第二节)】https://www.jianshu.com/p/adcc1286b21c
2.在每个节点上登录一下自己,产生.ssh目录
ssh localhost
3.从node01向node02/node03/node04分发公钥 (公钥的名称要变化)
scp id_dsa.pub node02:`pwd`/node01.pub
4.各节点把node01的公钥追加到认证文件里
cat ./node01.pub >> ~/.ssh/authorized_keys
5.node02/node03/node04安装jdk环境,node01分发profile给其他节点,并重读配置文件
scp /etc/profile node02:/etc/
三、安装Hadoop
1.node01安装配置Hadoop
解压安装步骤见【Hadoop学习笔记一:伪分布式搭建(第三节)】https://www.jianshu.com/p/adcc1286b21c
与伪分布式不同的是,全分布式的配置如下
vi core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/sxt/hadoop/full</value>
</property>
</configuration>
vi hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node02:50090</value>
</property>
</configuration>
vi slaves
node02
node03
node04
2.node01分发hadoop部署程序到其他节点
# copy node01 下的 hadoop 为 hadoop-local (管理脚本只会读取hadoop目录)
cd /opt/
scp -r sxt/ node02:`pwd`/
给每个子结点服务器配置Hadoop环境变量
vi + /etc/profile
#修改环境变量
export JAVA_HOME=/usr/java/jdk1.7.0_67
export HADOOP_HOME=/opt/sxt/hadoop-2.6.5
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
. /etc/profile
3.node01格式化HDFS
hdfs namenode -format
#查看生成的fsimage信息
cd /var/sxt/hadoop/full/dfs/name/current/
4.node01启动集群
#启动集群
start-dfs.sh
#查看生成信息
cd /var/sxt/hadoop/full/dfs/data/current/
cd /var/sxt/hadoop/full/dfs/namesecondary/current/
启动时候,三个角色以不同进程启动,提示如下:
Starting namenodes on [node01]
node01: starting namenode, logging to /opt/sxt/hadoop-2.6.5/logs/hadoop-root-namenode-node01.out
node03: starting datanode, logging to /opt/sxt/hadoop-2.6.5/logs/hadoop-root-datanode-node03.out
node04: starting datanode, logging to /opt/sxt/hadoop-2.6.5/logs/hadoop-root-datanode-node04.out
node02: starting datanode, logging to /opt/sxt/hadoop-2.6.5/logs/hadoop-root-datanode-node02.out
Starting secondary namenodes [node02]
node02: starting secondarynamenode, logging to /opt/sxt/hadoop-2.6.5/logs/hadoop-root-secondarynamenode-node02.out
每个节点角色进程查看
jps
DataNode数据存放位置
cd /var/sxt/hadoop/full/dfs/data/current/BP-2048660256-192.168.197.31-1574775079156/current/finalized
5.浏览器查看
ss -nal
浏览器访问 http://node00:50070 (window里hosts文件要映射到192.168.197.30)
6.日志查看和停止集群
日志查看
cd /opt/sxt/hadoop-2.6.5/logs
#out是临时文件 log是最终文件
-rw-r--r-- 1 root root 27445 Nov 26 17:36 hadoop-root-datanode-node01.log
-rw-r--r-- 1 root root 715 Nov 26 17:13 hadoop-root-datanode-node01.out
-rw-r--r-- 1 root root 29081 Nov 26 17:41 hadoop-root-namenode-node01.log
-rw-r--r-- 1 root root 4908 Nov 26 17:27 hadoop-root-namenode-node01.out
-rw-r--r-- 1 root root 19750 Nov 26 17:13 hadoop-root-secondarynamenode-node01.log
-rw-r--r-- 1 root root 715 Nov 26 17:13 hadoop-root-secondarynamenode-node01.out
-rw-r--r-- 1 root root 0 Nov 26 17:13 SecurityAuth-root.audit
#查看日志
tail -100 hadoop-root-datanode-node01.log
停止集群
stop-dfs.sh
7.上传文件
文件准备
cd ~/software
#生成一个1.6M的文本文件
for i in `seq 100000`;do echo "hello sxt $i" >> test.txt;done
创建目录,上传文件并设置文件block大小
#命令查看
hdfs dfs
#创建目录
hdfs dfs -mkdir -p /user/root
#查看目录
hdfs dfs -ls /
#上传文件
cd ~/software/
ls -lh ./
hdfs dfs -D dfs.blocksize=1048576 -put test.txt /user/root
dfs.blocksize 属性可在官网查看默认大小 128M
https://hadoop.apache.org/docs/r2.6.5/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
此时可到浏览器 Browse the file system 去查看文件
文件被切割成两个块,第一个1M,第二个0.6M
图片.png
注:图中Availability表示副本所在节点
可到DataNode节点去查看Block,文件的确被按照字节切开了
cd /var/sxt/hadoop/full/dfs/data/current/BP-2048660256-192.168.197.31-1574775079156/current/finalized/subdir0/subdir0
网友评论