欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

阿里云ECS7安装搭建:hadoop2.7.6分布式集群

程序员文章站 2022-05-07 18:56:21
...

简介

  • hadoop是一个分布式系统基础架构,是大数据生态的一个总称;
  • 核心设计包括:HDFS和MapReduce,HDFS为海量数据提供了存储,而MapReduce则为海量数据提供了计算;
  • 本篇博客则主要描述在阿里云服务器下部署hadoop集群

 

环境准备

  • 两台阿里云服务器(实验环境,正式环境建议使用三台或以上部署集群)centos_7,一台为主,另一台为从;
  • 两台服务器分别安装jdk1.8环境;
  • 下载hadoop版本安装包:hadoop-2.7.6.tar.gz

 

配置服务器(两台服务器都配)

1. 修改服务器hosts:vim /etc/hosts

#阿里云使用内网ip,不用外网ip
172.11.111.12 hadoop-master
172.11.111.13 hadoop-slave

2. 修改服务器的hostname

方式1:直接修改服务器配置文件:vim /etc/hostname

#删掉localhost
主节点修改成:hadoop-master
从节点修改成:hadoop-slave

执行reboot,重启服务器

方式2:在阿里云管理后台修改

阿里云ECS7安装搭建:hadoop2.7.6分布式集群

阿里云ECS7安装搭建:hadoop2.7.6分布式集群

重启阿里云服务器,然后hostname生效;

 

安装java-jdk1.8(两台服务器都安装)

1. 自行下载jdk1.8.0_152.tar.gz(网上一堆资源,不上传),解压至:/root/tools/jdk1.8.0_152

2. 配置环境变量:vim /etc/profile

export JAVA_HOME=/root/tools/jdk1.8.0_152
export PATH=$PATH:$JAVA_HOME/bin

3. 执行生效命令:source /etc/profile

4. 测试java版本:java -version

阿里云ECS7安装搭建:hadoop2.7.6分布式集群

 

设置服务器ssh免密登录

1. 设置master本机免密登录:

#生成免密key
$ ssh-****** -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
	
#授权
$ chmod 600 ~/.ssh/authorized_keys
	
#测试是否成功,如果不需要输入密码则成功
$ ssh localhost(或者hadoop-master)
	
#退出
$ exit

2. 设置hadoop-master免密登录到hadoop-slave:

$ ssh-copy-id hadoop-slave

3. 在hasoop-master上测试,如果不需要输入密码,则说明主从免密登录配置成功:

$ ssh hadoop-slave
#退出
$ exit

问题及解决:如果使用root用户依旧需要登录密码,则切换成hadoop用户

 

配置hadoop环境变量(两台服务器都要)

1. 新建hadoop用户(以上操作用的是root用户,以下操作都用hadoop用户)

$ useradd hadoop && echo hadoop | passwd --stdin hadoop
$ echo "hadoop ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

2. 将hadoop的文件夹权限转换成hadoop

$ sudo chown -R hadoop:hadoop hadoop/

3. 将hadoop-2.7.6.tar.gz压缩包上传至:/data/hadoop/hadoop/

4. 解压hadoop到当前文件夹:tar -xzvf  hadoop-2.7.6.tar.gz

5. 重命名:mv  hadoop-2.7.6  hadoop

6. 切换root用户,配置hadoop的环境变量:vim /etc/profile

export HADOOP_HOME=/data/hadoop/hadoop/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

7. 文件立即生效:source /etc/profile

8. 检验当前的hadoop版本:hadoop version

阿里云ECS7安装搭建:hadoop2.7.6分布式集群

 

配置hadoop文件

1. 在hadoop同级目录下新建文件夹:

$ cd /data/hadoop/hadoop
$ mkdir tmp
$ mkdir hdfs
$ mkdir hdfs/data
$ mkdir hdfs/name

2. 切换配置文件路径:cd /data/hadoop/hadoop/hadoop/etc/hadoop

3. 配置core-site.xml:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop-master:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/data/hadoop/hadoop/tmp</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
</configuration>

4. 配置hdfs-site.xml

<configuration>
	<property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/data/hadoop/hadoop/hdfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/data/hadoop/hadoop/hdfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop-master:9001</value>
    </property>
    <property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
    </property>
</configuration>

5. 配置mapred-site.xml

<configuration>
	<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop-master:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop-master:19888</value>
    </property>
</configuration>

6. 配置yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
 <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>hadoop-master:8032</value>
       </property>
       <property>
               <name>yarn.resourcemanager.scheduler.address</name>
               <value>hadoop-master:8030</value>
       </property>
       <property>
               <name>yarn.resourcemanager.resource-tracker.address</name>
               <value>hadoop-master:8031</value>
       </property>
       <property>
               <name>yarn.resourcemanager.admin.address</name>
               <value>hadoop-master:8033</value>
       </property>
       <property>
               <name>yarn.resourcemanager.webapp.address</name>
               <value>hadoop-master:8088</value>
       </property>

</configuration>

7. 配置slaves文件(该文件指定datanode从节点所在的服务器ip,这里实验环境只有两台服务器,所以将主节点master也加上去)

hadoop-master
hadoop-slave

8. 配置hadoop-env.sh(修改JAVA_HOME映射路径)

export JAVA_HOME=/root/tools/jdk1.8.0_152

 

同步hadoop到slave节点

1. 如果从节点slave还没有hadoop解压的压缩包,则直接同步所有的hadoop文件:

$ scp -r /data/hadoop/hadoop hadoop-slave:/data/hadoop/hadoop

2. 如果已经存在压缩包,则直接将etc/hadoop下的所有改动的配置文件覆盖到slave对应的目录下;

 

格式化hdfs

1. 在hadoop-master服务器上,切换hadoop用户:su hadoop;

2. 执行命令:hdfs namenode -format;

阿里云ECS7安装搭建:hadoop2.7.6分布式集群

 

启动以及关闭hadoop

1. 在hadoop-master节点,切换hadoop用户,执行命令:start-all.sh

2. 在hadoop-master节点执行命令:jps,则会看到以下进程:

阿里云ECS7安装搭建:hadoop2.7.6分布式集群

3. 在hadoop-slave节点执行命令:jps,则会看到以下进程:

阿里云ECS7安装搭建:hadoop2.7.6分布式集群

4. 如果发现有关的进程不存在,则可以对应查看相关的日志来查看出错问题,切换日志目录:

$ cd /data/hadoop/hadoop/hadoop/logs

 

阿里云配置外网访问安全组规则:

允许50070以及8088端口访问:

阿里云ECS7安装搭建:hadoop2.7.6分布式集群

 

外网访问hadoop节点状态 

1. 8088 查看yarn管理界面: http://47.107.123.266:8088

阿里云ECS7安装搭建:hadoop2.7.6分布式集群

2.  50070 查看hdfs管理界面: http://47.107.123.266:50070

阿里云ECS7安装搭建:hadoop2.7.6分布式集群

 

 总结

1. hadoop主要应用于大数据量的生态架构,集群配置在生产环境下,建议至少配4台服务器(一台主节点,三台数据节点);

2. 实践是检验认识真理性的唯一标准,自己动手,丰衣足食~