步骤:
- 安装JDK,配置环境变量
- 安装Hadoop,配置环境变量
- ssh免密配置
- 集群分发脚本
- 集群配置文件
- 启动
集群规划
master:10.199.164.226
slave1:10.199.217.78
slave1:10.199.217.79
master:10.199.164.226 | slave1:10.199.217.78 | slave1:10.199.217.79 |
---|---|---|
NameNode、DataNode | DataNode | SecondaryNameNode、DataNode |
NodeManager | ResourceManager、NodeManager | NodeManager |
安装
准备脚本配置
JAVA_HOME=/apps/svr/jdk1.8.0_11
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:/apps/svr/jdk1.8.0_11/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
HADOOP_HOME=/opt/module/hadoop-3.3.1
export HADOOP_HOME
export PATH=$HADOOP_HOME/bin:$PATH
export PATH=$HADOOP_HOME/sbin:$PATH
集群分发xsync脚本:
#!/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 in 10.199.164.226 10.199.217.79 10.199.217.78;
do
echo ------------------- root@$host --------------
for file in $@
do
if [ -e $file ]
then
pdir=$(cd -P $(dirname $file); pwd)
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
core-site.xml
<configuration>
<!--指定NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>10.199.164.226:8020</value>
</property>
<!--指定hadoop数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/module/hadoop-3.3.1/data</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<!-- nn web访问地址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>10.199.164.226:9870</value>
</property>
<!-- 22nn web访问地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>10.199.217.79:9868</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<!-- 指定MR走shuffle-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>10.199.217.78</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<!-- 指定MR程序运行在yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
启动
yarn web:
http://10.199.217.78:8088/cluster
Namenode:
shell命令
hdfs作为分布式存储系统,即将多台linux服务器整合起来使用,操作命令即同linux系统命令
hdfs操作的命令规律:hdfs dfs + linux