集群配置与搭建--Hadoop学习笔记

集群配置

该集群有102、103、104三台机器。

hadoop102 hadoop103 hadoop104
HDFS NameNode、DataNode DataNode SecondaryNameNode、DataNode
YARN NodeManager ResourceManager、NodeManager NodeManager

xsync脚本

先创建文件,放在bin目录下

[root@hadoop102 ~]# mkdir bin
[root@hadoop102 bin]# touch xsync

文件如下

[root@hadoop102 bin]# vim 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=103; host<105; host++)); do
        echo ------------------- cdh$host --------------
        rsync -rvl $pdir/$fname $user@cdh$host:$pdir
done

给权限

[root@hadoop102 bin]# chmod 777 xsync

配置102

首先每个机器的名称和ip匹配,进入/etc/hosts输入ip和服务名称。每台机器都要写。

[root@hadoop102 ~]# vim /etc/hosts
192.168.133.131 hadoop102
192.168.133.132 hadoop103
192.168.133.133 hadoop104

先配置hadoop102,进入hadoop

[root@hadoop102 /]# cd /opt/module/hadoop-2.8.2/
[root@hadoop102 hadoop-2.8.2]# cd etc/hadoop/

配置HDFS

修改hadoop-env.sh,改JAVA_HOME位置,先获取位置

[root@hadoop102 ~]# echo $JAVA_HOME 
/opt/module/jdk1.8.0_261

再修改

[root@hadoop102 hadoop]# vim hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_261

接着修改core-site.xml文件

[root@hadoop102 hadoop]# vim core-site.xml

添加

<configuration>
        <!--指定HDFS中NameNode地址-->
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop102:9000</value>
        </property>

        <!--指定Hadoop运行时产生文件的存储目录-->
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/opt/module/hadoop-2.8.2/data/tmp</value>
        </property>
</configuration>

修改HDFS配置文件hdfs-site.xml

[root@hadoop102 hadoop]# vim hdfs-site.xml 
<configuration>
	<!--指定Hadoop辅助名称节点主机配置-->
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>hadoop104:50090</value>
	</property>
</configuration>

配置yarn

修改yarn-env.sh文件

[root@hadoop102 hadoop]# vim yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_261

修改yarn-site.xml

[root@hadoop102 hadoop]# vim yarn-site.xml 
<configuration>

	<!--Reducer获取数据的方式-->
	<property>
       		 <name>yarn.nodemanager.aux-services</name>
       		 <value>mapreduce_shuffle</value>
   	 </property>

	<!--指定yarn的ResourceManager的地址-->
	<property>
        	<name>yarn.resourcemanager.hostname</name>
       		<value>hadoop103</value>
   	</property>

</configuration>

配置MapReduce

修改mapred-env.sh文件

[root@hadoop102 hadoop]# vim mapred-env.sh 
export JAVA_HOME=/opt/module/jdk1.8.0_261

修改mapred-site.xml,先把mapred-site.xml.template复制到mapred-site.xml再修改

[root@hadoop102 hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@hadoop102 hadoop]# vim mapred-site.xml
<configuration>

        <!--指定MR运行在yarn上-->
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
</configuration>

将上述配置同步到103、104,xsync是前面编写的脚本。

[root@hadoop102 hadoop]# cd ..
[root@hadoop102 etc]# xsync hadoop/

启动HDFS

先格式化,删除文件,102\103\104里面都要删(如果已经启动了,要先停止节点再删除文件)

[root@hadoop102 hadoop-2.8.2]# rm -rf data/ logs/
[root@hadoop102 hadoop-2.8.2]# bin/hdfs namenode -format

102上启动

[root@hadoop102 hadoop-2.8.2]# sbin/hadoop-daemon.sh start namenod
[root@hadoop102 hadoop-2.8.2]# sbin/hadoop-daemon.sh start datanode

103上启动

[root@hadoop102 hadoop-2.8.2]# sbin/hadoop-daemon.sh start datanode

104上启动

[root@hadoop102 hadoop-2.8.2]# sbin/hadoop-daemon.sh start datanode

然后本机浏览器上访问http://hadoop102:50070成功。

配置ssh

102上有NameNode,所以它需要访问其他机器,要配置免密登录。

在102进入ssh文件

[root@hadoop102 ~]# ls -all
[root@hadoop102 ~]# cd .ssh/

获取秘钥

[root@hadoop102 .ssh]# ssh-keygen -t rsa

回车后,三次回车

这时.ssh/下面多了两个文件,id_rsa存放私钥,id_rsa.pub存放公钥,known_hosts存放授权过的无密码登录服务器公钥。

[root@hadoop102 .ssh]# ll
总用量 12
-rw-------. 1 root root 1679 10月 22 08:57 id_rsa
-rw-r--r--. 1 root root  396 10月 22 08:57 id_rsa.pub
-rw-r--r--. 1 root root  374 10月 21 17:42 known_hosts

拷贝至103

[root@hadoop102 .ssh]# ssh-copy-id hadoop103

回车后第一次需要输入103的密码

此时,发现103的.ssh/下多了文件authorized_keys,里面存放的是102的公钥

[root@hadoop103 .ssh]# ll
总用量 4
-rw-------. 1 root root 396 10月 22 09:02 authorized_keys

同样的做法拷贝到102(自身也需要拷贝)、104 。

现在102访问103和104就不需要密码了,实现免密通信。

此外,103上面有ResourceManager,也需要配置ssh。

群起集群

配置slaves

进入102,修改slaves

[root@hadoop103 .ssh]# cd /opt/module/hadoop-2.8.2/etc/hadoop/
[root@hadoop103 hadoop]# vim slaves 
hadoop102
hadoop103
hadoop104

删除文件里其他内容,添加机器名称(这里不能有多余的空格)。

先查看运行的进程

[root@hadoop102 hadoop-2.8.2]# jps
56437 NameNode
67051 Jps
56543 DataNode

把DataNode、NameNode退出

[root@hadoop102 hadoop-2.8.2]# sbin/hadoop-daemon.sh stop datanode
[root@hadoop102 hadoop-2.8.2]# sbin/hadoop-daemon.sh stop namenode

进入103、104,退出DataNode

[root@hadoop102 hadoop-2.8.2]# sbin/hadoop-daemon.sh stop datanode

这样所有的节点就都正常退出了。

启动HDFS

在102群起

[root@hadoop102 hadoop-2.8.2]# sbin/start-dfs.sh

启动yarn

在103上启动yarn,在另外两个上启动会直接挂,因为ResourceManager配在103上。

[root@hadoop103 hadoop-2.8.2]# sbin/start-yarn.sh 

集群测试

传文件测试,将README.txt上传到/目录下

[root@hadoop102 hadoop-2.8.2]# bin/hdfs dfs -put README.txt /

访问http://hadoop102:50070/
在这里插入图片描述这里可以看到上传的文件,
在这里插入图片描述

这里数据其实是存储在Linux上的,在下面的目录blk_1073741825文件

[root@hadoop102 subdir0]# pwd
/opt/module/hadoop-2.8.2/data/tmp/dfs/data/current/BP-1924141108-192.168.133.131-1603273870979/current/finalized/subdir0/subdir0

猜你喜欢

转载自blog.csdn.net/liuliusix/article/details/109220171