超详细的Hadoop集群部署

本文建立在已经把虚拟机ip环境等已经下载好情况下。
那么,直接开始今天的正题:

搭建集群

环境准备

这里提供两种思路:一种是将一台直接搭建好,后面的克隆或者copy虚拟机
一种是3台并进,多次进行虚拟机之间文件互传,各有利弊,第一种方式容易漏改ip等问题,第二种方式简单明了,一遍过手,就是步骤稍微多一点,这里采用第二种方式:
1、配置服务器(我这里是以3台为例)

1个主节点:hadoop1(192.168.183.161),2个(从)子节点,hadoop2(192.168.183.162),hadoop13(192.168.183.163)

2、配置主节点名hadoop1(192.168.183.161)

在命令行输入: vi /etc/sysconfig/network

添加内容:
NETWORKING=yes
HOSTNAME=hadoop1

配置两台子节点名(192.168.102.136)和(192.168.102.137):
vi /etc/sysconfig/network
添加内容:
NETWORKING=yes
HOSTNAME=hadoop2

vi /etc/sysconfig/network
添加内容:
NETWORKING=yes
HOSTNAME=hadoop3

这块再多改一个东西 vi /etc/hostname

加上主机名 hadoop1,每个节点都执行各自的主机名

注意vi /etc/sysconfig/network 记得去掉 #号那一行,有时候会因为这个改不成功

3、配置hosts

打开主节点的hosts文件,将文件的前两行注释掉 (注释当前主机的信息)并在文件中添加所有hadoop集群的主机息。

在命令行输入: vi /etc/hosts
添加3台服务器的节点名信息(这个也就是后面用的映射)

192.168.183.161   hadoop1
192.168.183.162   hadoop2
192.168.183.163   hadoop3

保存之后,将主节点的hosts分别拷贝到其他两个子节点
命令行分别输入:
scp /etc/hosts [email protected]:/etc/
scp /etc/hosts [email protected]:/etc/
话不多说 重启吧,然后我们继续,可以看到主机名已经更改了

配置DNS请看这一篇 :https://blog.csdn.net/teisite/article/details/81196244

4、关闭防火墙(每一台机器上面执行)

a.查看防火墙状态
firewall-cmd --state

b.停止firewall
systemctl stop firewalld.service

c.禁止firewall开机启动
systemctl disable firewalld.service

5、时间同步

命令行输入:yum install ntp 下载ntp插件 ,
下载完成后 命令行输入:ntpdate -u ntp1.aliyun.com
然后命令行输入:date
如果出现如下情况表示配置成功:

6、配置ssh无密码访问(这步很关键,请用心)

生成公钥密钥对

在每个节点上分别执行:
命令行输入:ssh-keygen -t rsa
一直按回车直到生成结束
执行结束之后每个节点上的/root/.ssh/目录下生成了两个文件 id_rsa 和 id_rsa.pub
其中前者为私钥,后者为公钥


在主节点上执行:
命令行输入:cp id_rsa.pub authorized_keys
将子节点的公钥拷贝到主节点并添加进authorized_keys

将两个子节点的公钥拷贝到主节点上
分别在两个子节点上执行:

scp /root/.ssh/id_rsa.pub   root@hadoop1:/root/.ssh/id_rsa_hadoop2.pub
scp /root/.ssh/id_rsa.pub   root@hadoop1:/root/.ssh/id_rsa_hadoop3.pub

然后在主节点上,将拷贝过来的两个公钥合并到authorized_keys文件中去
主节点上执行:
cat id_rsa_hadoop2.pub>> authorized_keys
cat id_rsa_hadoop3.pub>> authorized_keys

将主节点的authorized_keys文件分别替换子节点的authorized_keys文件,此时主节点上面的内容已经是最全的了,
主节点上用scp命令将authorized_keys文件拷贝到子节点的相应位置,

scp authorized_keys root@hadoop2:/root/.ssh/
scp authorized_keys root@hadoop3:/root/.ssh/

最后测试是否配置成功

在hadoop1上分别执行
ssh hadoop2
ssh hadoop2

相互之前也要能ssh成功
能正确跳转到两台子节点的操作界面即可,同样在每个子节点通过相同的方式登录主节点和其他子节点也能无密码正常登录就表示配置成功。

这里的配置方式可以有多种操作步骤,最终目的是每个节点上的/root/.ssh/authorized_keys文件中都包含所有的节点生成的公钥内容。到此免密已经OK

7、jdk安装

配置环境变量, 编辑profile文件:
vi /etc/profile
在profile文件末尾添加以下代码:

export JAVA_HOME=/usr/local/jdk1.8.0_191
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib

保存,source /etc/profile 生效配置文件
测试是否安装成功:java -version

至此环境已经OK,开始开心的安装hadoop集群

8、安装hadoop

解压安装包:tar -zxvf hadoop-2.7.7.tar.gz

tar -zxvf hadoop-2.7.0.tar.gz -C /home/software/soft/ 解压到指定目录
cp -r jdk1.8.0_11/ /home/software/soft/ 复制到指定目录

完事儿后配置环境变量:
vi /etc/profile
在末尾添加:

export HADOOP_HOME=/usr/local/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

保存后使新编辑的profile生效:source /etc/profile

hadoop配置
修改文件:
1:hadoop-env.sh ——>jdk
2:yarn-env.sh ——>jdk
3:core-site.xml
4:hdfs-site.xml
5:mapred-site.xml
6:yarn-site.xml
7:slaves ——>子节点,节点
其中hadoop-env.sh和yarn-env.sh里面都要添加jdk,接下来一个一个来

hadoop-env.sh中

添加如下代码:   export JAVA_HOME=/home/usr/java/jdk1.8.0_11       到如下位置:

yarn-env.sh中

添加如下代码:   export JAVA_HOME=/home/usr/java/jdk1.8.0_11       到如下位置:

core-site.xml中

添加如下代码:

<configuration>
	<property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop1:9000</value>
        </property>
        <property>
                <name>io.file.buffer.size</name>
                <value>131072</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/home/usr/java/hadoop-2.7.0/temp</value>
        </property>
        <property>
                <name>hadoop.proxyuser.root.hosts</name>
                <value>*</value>
        </property>
        <property>
                <name>hadoop.proxyuser.root.groups</name>
                <value>*</value>
        </property>
</configuration>

注:上面代码中file后的路径下的temp文件夹需要自己创建

hdfs-site.xml中

添加如下代码:

<configuration>
	<property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>hadoop1:9001</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/home/usr/java/hadoop-2.7.0/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/home/usr/java/hadoop-2.7.0/dfs/data</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
        <property>
                <name>dfs.webhdfs.enabled</name>
                <value>true</value>
        </property>
        <property>
                <name>dfs.permissions</name>
                <value>false</value>
        </property>
        <property>
                <name>dfs.web.ugi</name>
               	<value>supergroup</value>
        </property>
</configuration>

注:上面代码中file后的路径下的/dfs/data文件夹需要自己创建

mapred-site.xml中

(注意要将mapred-site.xml.template重命名为 .xml的文件   Mv mapred-site.xml.template mapred-site.xml)
<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>hadoop1:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>hadoop1:19888</value>
        </property>
</configuration>

yarn-site.xml中

添加如下代码:

<configuration>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
                <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
                <name>yarn.resourcemanager.address</name>
                <value>hadoop1:8032</value>
        </property>
        <property>
                <name>yarn.resourcemanager.scheduler.address</name>
                <value>hadoop1:8030</value>
        </property>
        <property>
                <name>yarn.resourcemanager.resource-tracker.address</name>
                <value>hadoop1:8031</value>
        </property>
        <property>
                <name>yarn.resourcemanager.admin.address</name>
                <value>hadoop1:8033</value>
        </property>
        <property>
                <name>yarn.resourcemanager.webapp.address</name>
                <value>hadoop1:8088</value>
        </property>
</configuration>

slaves中

修改成:
hadoop2
hadoop3

主节点上面该配的已经配完,下面是copy子节点的了

主节点上执行:
scp -r /home/usr/java/hadoop-2.7.0     root@hadoop2:/home/usr/java
scp -r /home/usr/java/hadoop-2.7.0     root@hadoop3:/home/usr/java

拷贝profile到子节点

主节点上执行:
scp /etc/profile root@hadoop2:/etc/
scp /etc/profile root@hadoop3:/etc/

在两个子节点上分别使新的profile生效:

source /etc/profile

格式化主节点的namenode

主节点上进入hadoop目录
然后执行:
./bin/hadoop namenode -format
新版本用下面的语句不用hadoop命令了
./bin/hdfs namenode -format
提示:successfully formatted表示格式化成功

记得加上这个配置,可避免集群环境停不下来的问题:

https://blog.csdn.net/Alex_81D/article/details/105092935

此时已经完成:

启动hadoop

主节点上在hadoop目录下执行:
./sbin/start-all.sh

主节点上jps进程如下:
NameNode
SecondaryNameNode
ResourceManager

每个子节点上的jps进程如下:
DataNode
NodeManager

如果这样表示hadoop集群配置成功

此时整个集群完成!!!!是不是很简单

猜你喜欢

转载自blog.csdn.net/Alex_81D/article/details/102964892
今日推荐