大数据完全分布式环境搭建

.ssh权限问题

1.~/.ssh/authorized_keys
    644
 2.$/.ssh
    700
  3.root

配置SSH

生成密钥对
$>ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
添加认证文件

$>cp id_rsa.pub authorized_keys
$>scp id_rsa.pub hadoop@dn1:~/.ssh/authorized_keys

权限设置,文件夹和文件除了自己以外别人不可写

$>chmod 700 ~/.ssh
$>chmod 644 ~/.ssh/authorized_keys

修改文件的用户以及用户组

sudo chown -R hadoop:hadoop /usr/

由于在设置权限的时候把/usr的权限设置成了我自己的账号,导致在我的用户下,su root的时候报错,这时候就需要进入root用户下把权限修改回来

chown root:root /bin/su
chmod 4755  /bin/su

完全分布式 (一个节点配置完成以后要分发到其他节点里面)

1.配置文件

  • core-site.xml
    fs.defaultFS=hdfs://nn1:8020/
  • hdfs-site.xml
    replication=1 //伪分布式
    replication=3 //完全分布式
  • mapred-site.xml
    mapreduce.framework.name=yarn //框架
  • yarn-site.xml
    rm.name=nn1 //不同的主机这个名字不一样
  • workers //数据节点 (hadoop3.0以前的名字是slaves)
    dn1
    dn2
    dn3
  • hadoop-env.sh
    export JAVA_HOME=/soft/jdk

2.分发文件

1.ssh

  • openssh-server //sshd
  • openssh-clients //ssh
  • openssh //ssh-keygen

2.scp/rsync

1. scp远程复制

  • scp xxx root@dn1:/soft /hadoop

2. rsync远程同步,支持符号链接

  • rsync -lr xxx xxx

3.格式化文件系统

$>hadoop namenode -format

hadoop集群在修改配置文件以后要经常重新format,为了format的时候不产生问题,需要删除/tmp以及hadoop目录下logs中的文件所以写了sh简单的shell脚本来执行
脚本写完以后要通过执行下面命令来赋予执行权限

chmod +x rmhadooplogs.sh

我创建了一个名称节点和三个数据节点
这个脚本放在名称节点的root目录下

#!/bin/sh

echo "清理开始"
cd /root
./rmNN1logs.sh
echo "nn清理完毕"
echo "dn1开始清理"
ssh root@dn1 "cd /root/;source rmDN1logs.sh"
echo "dn2开始清理"
ssh root@dn2 "cd /root/;source rmDN2logs.sh"
echo "dn3开始清理"
ssh root@dn3 "cd /root/;source rmDN3logs.sh"
echo "清理完毕"

三个数据节点的root目录下放单个的删除脚本

#!/bin/sh

cd /tmp
rm -rf *
echo "dn1中tmp目录清除完成"
cd /soft/hadoop/logs
rm -rf *
echo "soft/hadoop/logs目录清除完成"
image.png

4.启动hadoop所有进程

//start-dfs.sh + start-yarn.sh
$>start-all.sh

5.xcall.sh jps 编写简单的sh脚本来执行

xcall.sh

#!/bin/sh

params=$@
hosts=(nn1 dn1 dn2 dn3)
for host in ${hosts[@]}
do
    echo =========== $host:$params=====
    ssh $host "$params"
done

hosts中是你的主机名
param=$@ //脚本后面跟的参数 表示你要执行的命令
创建xcall.sh后,将文件拷贝到/usr/local/bin目录下,并且设置可以执行的权限,同时在/usr/local/bin目录下创建java与jps的链接


image.png

每个主机中都要这么添加链接
添加完毕以后运行命令,发现命令可以执行,就可以了

image.png

6.xsync.sh 分发文件(如果当前目录有这个文件会进行覆盖)

xsync.sh

#!/bin/sh

#1、获取输入参数的个数,如果没有参数,直接退出
params=$#
if((params==0))
then
   echo no args
   exit
fi
echo "params" ----$params
#2、获取文件名称
pl=$1  
echo "pl"----$pl
fname=$(basename $pl)
#echo fname=$fname

#3、获取上级目录的绝对路径
pdir=$(cd -P $(dirname $pl);pwd)

#4、获取当前用户名称
user=$(whoami)

#5、循环

hosts=(nn1 dn1 dn2 dn3)
for host in ${hosts[@]}
do
  echo ==========$host==========
  rsync -rvl $pdir/$fname $user@$host:$pdir
  echo -----$pdir/$fname $user@$host:$pdir------
done

同样的这个也要放到/usr/local/bin的目录下
可以通过rpm -qa|grep "rsync"来确认每个主机是否安装,
通过yum -y install rsync来进行安装,
下图是安装将文件分发到其它主机控制台打出的log

image.png

7.关闭centos的防火墙

sudo service firewalld stop // <=6.5  start/stop/status/restart
sudo systemctl stop firewalld  //7.0  

sudo systemctl disable firewalld  //关闭
sudo systemctl enable firewalld  //开启

符号链接

  1. 在/usr/local/bin创建java和jps链接的时候是root用户,现在改成了hadoop用户,想要把用户和用户组改成hadoop
    修改符号链接的owner
sudo chown -h hadoop:hadoop jps  //-h针对链接本身,而不是所指文件

可以通过这个命令来修改需要加“h”,加h修改的是符号链接本身而不是链接所指向的位置



修改的时候显示hadoop不在sudoers中,需要在/etc/sudoers中root 下添加hadoop用户就可以了


image.png
  1. 修改符号链接
ln -sfT index.html index //覆盖原有的链接

chown -h hadoop:hadoop /usr/local/bin/jps  //修改链接文件的用户以及用户组 -h 表示只针对当前的链接不针对所链接的文件

hadoop的端口(hadoop3以上的端口发生了改变)

  • 50070 namenode的http port -> 9870

  • 50075 datanode的http port ->9864

  • 50090 2namenode http port ->9868

  • 8020 namenode rps port 远程通信端口 ->9820

  • 50010 datanode rps port ->9866

hadoop的四个模块

  • common
  • hdfs // 存储 分布式文件系统模块 namenode + datanode + secondarynamenode
  • mapreduce //MR,编程模型
  • yarn // 资源调度 框架 resourcemanager + nodemanager

进程-启动脚本

1.start-all.sh //启动所有进程
2.stop-all.sh //关闭所有进程
3.start-dfs.sh

  • Namenode NN
  • Datanode DN
  • SecondaryNamenode2NN

4.start-yarn.sh

  • ResourceManager RM
  • NodeManager NM

脚本分析

hdfs --workers --daemon start datanode  //在名称节点中开启所有的数据节点
hdfs --daemon start namenode //开启名称节点
  • sbin/start-all.sh

1.libexec/hadoop-config.sh
2.sbin/start-dfs.sh
3.sbin/start-yarn.sh

hdfs --daemon start namenode //开启名称节点
hdfs --workers --daemon start datanode  //开启数据节点
hdfs --daemon start datanode //开启所在主机的名称节点

hdfs --daemon stop namenode
hdfs --workers --daemon stop datanode  //在stop-all.sh中添加这条语句可以关闭数据节点,防止在stop-all.sh执行中报数据节点出错不能关闭
  • sbin/start-dfs.sh

1.libexec/hdfs-config.sh
2.bin/hdfs namenode --workers --config .. --daemon .. --hostname start namenode ...
3.bin/hdfs datanode --workers --config .. --daemon .. --hostname start datanode ...
4.bin/hdfs secondarynamecode --workers --config .. --daemon .. --hostname start secondarynamecode ...
5.bin/hdfs zkfc --workers --config .. --daemon .. --hostname start zkfc ... //容灾

  • sbin/start-yarn.sh

1.libexec/yarn-config.sh
2.bin/yarn resourcemanager --workers --config .. --daemon .. --hostname start resourcemanager ...
3.bin/yarn nodemanager --workers --config .. --daemon .. start nodemanager ...
4.bin/yarn proxyserver --workers --config .. --daemon .. --hostname start proxyserver ...

  • bin/hadoop

  • hadoop version //版本

  • hadoop fs //文件系统客户端

  • hadoop jar //运行jar包

  • hadoop classpath //查看类路径(每一个命令都对应着一个java类,当选择命令后,都会去找对应的java类文件来进行执行)

  • hadoop checknative //检查本地库(压缩和解压缩会用到)

  • hdfs常用命令


  • hdfs dfs -mkdir /user/centos/hadoop //在节点中创建目录
  • hdfs dfs -ls -r /user/centos/hadoop
  • hdfs dfs -lsr /user/centos/hadoop
  • hdfs dfs -put index.html /user/centos/hadoop
  • hdfs dfs -get /user/centos/hadoop/index.html a.html
  • hdfs dfs -rm -r -f /user/centos/hadoop

hdfs hadoop文件系统

1.hadoop将文件进行了切割分成了128M每块,原因是要让磁盘的寻址时间占用读取时间的1%,寻址时间是10ms,磁盘速率是100M/s,那么在1s内所能读取的内容为100M左右,所以切割的大小为128M
2.hadoop在名称节点下面只存放目录,存放fsimage文件是镜像,在数据节点下面存放的是数据,如果存放的数据被切割,可以通过cat 后一部分 >> 前一部分来合成原来的文件,这个切割是没有添加标记头的。

3.名称节点在启动的时候会初始化内存中的文件系统结构,metainfo,名称节点只存放块的信息,不存放节点的信息,数据节点启动以后会向名称节点报告,报告自己的块列表。这样会造成节点id与块的映射。

HA:


high availablity //高可用性,通常用个5个9来衡量99.999%

SPOF:


single point of failure,单点故障 (配置两个名称节点)

secondarynamenode


辅助名称节点,备份,定期从名称节点抓取数据并且送回去,只是用来备份的并不是高可用

配置hadoop的临时目录

1.配置core-site.xml文件
hadoop.tmp.dir=/home/hadoop/hadoop
以下路径中地址都由上面的这个配置来决定,下面参数在hdfs-site.xml中修改

dfs.namenode.name.dir=file:///${hadoop.tmp.dir}/dfs/name
dfs.datanode.data.dir=file:///${hadoop.tmp.dir}/dfs/data
dfs.namenode.checkpoint.dir=file:///${hadoop.tmp.dir}/dfs/namesecondary

2.分发core-site.xml文件
xsync.sh core-site.xml
3.格式化文件系统
hdfs namenode -format
4.启动hadoop
start-dfs.sh

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,406评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,976评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,302评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,366评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,372评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,457评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,872评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,521评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,717评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,523评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,590评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,299评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,859评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,883评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,127评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,760评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,290评论 2 342