hadoop完全分布式搭建实例

339 阅读3分钟

1.机器准备

1.1 准备三台机器

我这里使用了两台配备了centos7的虚拟机和一台arch的笔记本作为搭建的机器

1.2 系统设置准备

我这里以虚拟机为例,登录虚拟机root账号后

vi /ect/hostname

输入你想改的主机名

vi /etc/sysconfig/network-scripts/ifcfg-ens33

更改ip地址

最好可以安装配置下ssh

启动ssh

sudo service sshd start

默认开机启动ssh

systemctl enable sshd.service

配置hosts文件

vi /etc/hosts

1.3下载安装Hadoop与open-jdk

hadoop.apache.org/releases.ht…

tar -xvf hadoopXXXXX.tar.gz

JDK的安装可以看我的上一篇文章或者百度教程

测试java环境

java -version
javac

1.4防火墙设置

关闭防火墙

systemctl stop firewalld.service

设置防火墙开机不启动

systemctl disable firewalld.service

1.5配置Hadoop用户

首先创建账户

adduser hadoop

查看账户信息

id hadoop

为Hadoop用户添加sudo权限

vi /etc/sudoers

加入

hadoop ALL=(root) NOPASSWD:ALL

设置文件拥有者

chown -R hadoop:hadoop /user/local/hadoopXXXX

2.Hadoop集群配置

2.1集群规划

os003os001os002
hdfsdatanode secondarynamenodenamenode datanodedatanode
yarnnodemanagerresoucemanager nodemanagernodemanager

2.2配置文件

首先我们来配置os001

vim etc/hadoop/hadoop-env.sh

更改

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64
vim etc/hadoop/core-site.xml

输入

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://os001:9000</value>
        </property>
         <property>
                <name>hadoop.tmp.dir</name>
                <value>/usr/local/hadoop-3.2.1/data/tmp</value>
        </property>
</configuration>
vim etc/hadoop/hdfs-site.xml

输入

<configuration>
        <property>
                <name>dfs.replication</name>
                <value>3</value>
        </property>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>os003:9868</value>
        </property>
</configuration>
vim etc/hadoop/yarn-env.sh

输入

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64
vim etc/hadoop/yarn-site.xml

输入

<configuration>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
         <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>os001</value>
        </property>
</configuration>
vim etc/hadoop/mapred-env.sh

输入

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64
vim etc/hadoop/mapred-site.xml

输入

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </propertyn
</configuration>

通过分发脚本xrsync或者其他方法在其他机器上同步hadoop/etc/下的配置文件

2.2配置ssh集群

在os001上的hadoop用户目录下输入

ssh-keygen -t rsa

输入两次回车生成一个私钥一个公钥

可查看生成了一个.ssh文件

ls -al

id_rsa.pub里寄存了公钥

[hadoop@os001 .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDp+ENjMLAVYYVGHU5YPWl4zuH3ICkyefmT7bywuX0HGEHVzRJ74nNqeyM2LnIc4ZTb2kjexBv/o+oZrz8TuP6SqFhx+Zt99SWOatAIqzpYm8hSQIGyGSnQlj3eK/mxGlzEB6HTdiF4qRdvOw81ohEByKtXJYKgzFzLt463cS+oLAHjMwTAdn7vbpCVOccqhAc/5RinW047Xz4pPZDsf7I36jUqWlZ6bklj6FUulyjC7ecpPzXfvck7mogdXxgyDpOQf4N85qnVq5ITpzbsn+ntqsJ7gMHC4NkMouk/t0pTK0XfBQBbaKP79qCkKh47A7HJ7XhO28CnKJUYXX6ZIPJ1 hadoop@os001

设置hadoop用户目录的权限为700

chmod 700 /home/hadoop

设置.ssh目录权限为700

chmod 700 /home/hadoop/.ssh

设置authorized_keys文件权限为600

chmod 600 /home/hadoop/.ssh

把公钥传给其他机器,因为os002上配置了namenode与resoucemanager

ssh-copy-id os002@os002
ssh-copy-id os003@os003
ssh-copy-id os001@os001

测试

ssh os003@os003

因可以不用密码直接登录os003

输入exit可退出ssh

3.启动hadoop集群

3.1格式化namenode

首先在os001下格式化NameNode

bin/hdfs namenode -format

3.2配置workers文件

配置workers(2.X版本为slaves文件)

vim workers

加入datanode

os001
os002
os003

其他机器也同样设置

3.3启动集群

在os001中启动hdfs

[hadoop@os001 ~]$ /usr/local/hadoop-3.2.1/sbin/start-dfs.sh

其中yarn

[hadoop@os001 ~]$ /usr/local/hadoop-3.2.1/sbin/start-yarn.sh

查看各个主机节点启动情况

jps