Hadoop学习笔记三:全分布式搭建(Hadoop1.x)

本文记录学习过程,安装全分布式的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


    
        fs.defaultFS
        hdfs://node01:9000
    
    
        hadoop.tmp.dir
        /var/sxt/hadoop/full
    

vi hdfs-site.xml


    
        dfs.replication
        3
    
    
        dfs.namenode.secondary.http-address
        node02:50090
    

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

你可能感兴趣的:(Hadoop学习笔记三:全分布式搭建(Hadoop1.x))