一、Hadoop集群(完全分布式)
-
1.1 拿模板机克隆三台虚拟机(DT100,DT101,dt102),其中DT100作为master,DT101,102作为slaves
-
A.在master安装必要工具
yum -y install vim yum -y install lrzsz
-
B.上传jdk和hadoop安装包到/opt/software
-
C.创建普通用户dt,修改密码为dt
useradd dt passwd dt
-
D.修改hosts文件,增加主机名与IP映射.
-
E.修改windows的hosts映射.
C:\Windows\System32\drivers\etc
-
F. 修改每个机器的静态IP地址
-
G.修改主机名
-
H.为xshell工具创建连接
-
-
1.2 使用rsync 编写分发脚本
cp命令 与scp和rsync
cp -r source dest #从s拷贝到d cp -r /dt/123 /dt/bcd scp -r s d # 远程拷贝 scp -r dt100:/opt/module dt101:/opt rsync -av s d 注意:rsync 只能有一个远程和一个本地,不能同时为远程操作. 总结: 1.scp是内容拷贝,rsync是归档拷贝(权限,文件创建时间相同) 2.scp两端都可以是远程,rsync只能有一个是远程. 3.内容拷贝适合第一次,第N次的时候只想把更改的文件发送过去的话,使用rsync它只拷贝差异部分. 集群中同步文件,使用rsync 更方便.
使用rsync编写一个分发脚本
vi qq #!/bin/bash #1 获取输入参数个数,如果没有参数,直接退出 pcount=$# if((pcount==0)); then echo no args; exit; fi #2 获取文件名称 p1=$1 fname=`basename $p1` echo fname=$fname #3 获取上级目录到绝对路径 pdir=`cd -P $(dirname $p1); pwd` echo pdir=$pdir #4 获取当前用户名称 user=`whoami` #5 循环 for((host=101; host<103; host++)); do echo ------------------- hadoop dt$host -------------- rsync -av $pdir/$fname $user@dt$host:$pdir done
-
1.3 编写jpsall脚本
通过master 查看其它集群节点的jps信息
原理:
ssh 用户名@主机地址 命令
例如 ssh dt@101 mkdir 123
注意:
ssh 登陆之后,不会加载profile文件环境变量.
ssh登陆之后,只会加载/etc/bashrc文件中的配置信息.
两种解决方案:
A.通过代码加载profile
source /etc/prifile
B.使用命令程序的绝对路径
/opt/m/jdk/jps
不建议直接修改bashrc,因为所有集群机器都要修改。
-
vi jpsall #!/bin/bash for((i=100;i<103;i++)) do echo --------------------------- dt$i ---------------------- ssh dt@dt$i /opt/module/jdk1.8.0_144/bin/jps done :wq! sudo cp jpsall /bin/
-
1.4 设置共享文件夹(可选)
右键虚拟机名称->设置->选项(选项卡)->将共享文件夹设置为"总是启用"->添加需要共享的文件夹->确定 共享之后,在linux系统中的/mnt/hgfs 文件夹中读取内容
假设当前要做一个最小规模集群,其中3台机器负责存储文件.
角色如下:
NN(1) DN(3) 2NN(1) RM(1) NM(3)
NN与2NN不应该放在同一个服务器上.
#### 1. 配置3台服务器的NPPFTP
2. 修改核心配置文件core.site.xml(nn配置)
<property>
<name>fs.defaultFS</name>
<value>hdfs://dt100:9000</value>
</property
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/m/h/data</value>
</property
-
A.hadoop.env.sh 配置JAVA_HOME
-
B.hdfs.site.xml,默认副本数3
<property> <name>dfs.replication</name> <value>3</value> </property> <!-- 2NN配置--> <property> <name>dfs.namenode.secondary.http-address</name> <value>dt101:50090</value> </property>
####4.Yarn配置
-
A.yarn.env.sh 配置JAVA_HOME
-
B.yarn.site.xml
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>dt102</value> </property>
####5.MapReduce配置
-
A.mapred.env.sh 配置JAVA_HOME
-
B.mapred.site.xml
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
####6.分发配置文件
qq etc
-
A.先格式化NN
hdfs namenode -format
-
B.在DT100上启动NN
hadoop-daemon.sh start namenode jps
-
C.启动DN(DT100,DT101,DT102)
hadoop-daemon.sh start datanode
-
D.在DT101启动2NN
hadoop-daemon.sh start secondarynamenode
-
E.http://dt100:50070 查看启动情况
-
F.启动RM(102)
yarn-daemon.sh start resourcemanager
-
G.启动NM(100,101,102)
yarn-daemon.sh start nodemanager