• 第1关:Hadoop集群的部署,安装和管理


    我们准备了三台虚拟服务器,连接方式如下:

    服务器SSH密码ip
    masterssh 172.18.0.2123123172.18.0.2
    slave1ssh 172.18.0.3123123172.18.0.3
    slave2ssh 172.18.0.4123123172.18.0.4

    第一步我们需要在 evassh 服务器初始化虚拟服务器:

    1. cd /opt
    2. wrapdocker
    3. ulimit -f unlimited
    4. docker load -i ubuntu16-ssh.tar
    5. docker-compose up -d

    注意:请不要在各个虚拟服务器之间进行 ssh 登录,这种操作会导致无法保存配置数据。正确方法是:在虚拟服务器里执行 exit 后回到 evassh 服务器,再按上述方法登录各虚拟服务器。

    文件传输

    通过 scp 命令将 evassh 上面的 Java 安装包与 Hadoop 安装包放入 master 服务器上的/opt 目录下。

    1. scp /opt/jdk-8u141-linux-x64.tar.gz root@172.18.0.2:/opt
    2. scp /opt/hadoop-3.1.0.tar.gz root@172.18.0.2:/opt

    第一次连接,会询问是否继续连接。键盘输入 yes 并输入密码 123123 即可进行传输。

     

    配置免密登录

    在集群搭建过程中,我们会频繁的在各个服务器之间跳转,此过程是通过 SSH 去连接的,为了避免启动过程输入密码,我们可以配置免密登录。

    1、分别在 master、slave1、slave2 生成密钥,命令如下:

    在 master 服务器生成秘钥:

    1. # 进入 master 服务器,键盘输入 yes 与 密码 123123
    2. ssh 172.18.0.2
    3. ssh-keygen -t rsa
    4. # 执行命令之后,连着按三个回车键即可生成秘钥。

    这里我们可以开启多个命令行窗口,可以大大减少各个服务器之间的跳转次数。

    点击 + 号开启多个窗口,最多可以开启共 3 个命令行窗口。

    在 salve1 服务器生成秘钥:

     
    
    1. 进入 salve1 服务器,键盘输入 yes 与 密码 123123
    2. ssh 172.18.0.3
    3. ssh-keygen -t rsa

    在 salve2 服务器生成秘钥:

     
    
    1. # 进入 salve2 服务器,键盘输入 yes 与 密码 123123
    2. ssh 172.18.0.4
    3. ssh-keygen -t rsa

    master、slave1和slave2直接已经做了映射,所以这里不需要再做映射。

    2、 在 master 复制 master、slave1、slave2 的公钥

    1. cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys
    2. ssh slave1 cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys
    3. ssh slave2 cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys
    4. 密码为:123123
     
    

    3、 在 slave1 复制 master 的 authorized_keys 文件。

    1. ssh master cat ~/.ssh/authorized_keys>> ~/.ssh/authorized_keys

    4、 在 slave2 复制 master 的 authorized_keys 文件。

    ssh master cat ~/.ssh/authorized_keys>> ~/.ssh/authorized_keys

    集群之间免密至此设置成功

    集群安装 JavaJDK

    在 master 服务器的 /opt 目录下有 evassh 服务器传过来的 Java 安装包与 Hadoop 安装包。解压 Java 安装包至/usr/local目录下。

    tar -zxvf /opt/jdk-8u141-linux-x64.tar.gz -C /usr/local/

    解压好JDK之后还需要在环境变量中配置JDK,才可以使用,接下来就来配置JDK。 输入命令:vim /etc/profile 编辑配置文件; 在文件末尾输入如下代码(不可以有空格):

    1. export JAVA_HOME=/usr/local/jdk1.8.0_141
    2. export PATH=$PATH:$JAVA_HOME/bin

    然后,保存并退出。

    最后:

    source /etc/profile

    使刚刚的配置生效。

    输入:

    java -version

    出现如下界面代表配置成功。

    将解压好的JDK与配置文件通过 scp 命令发送至 slave1、slave2 中。

     
    
    1. #发送JDK
    2. scp -r /usr/local/jdk1.8.0_141/ root@slave1:/usr/local/
    3. scp -r /usr/local/jdk1.8.0_141/ root@slave2:/usr/local/
    4. #发送配置文件
    5. scp /etc/profile root@slave1:/etc/
    6. scp /etc/profile root@slave2:/etc/

    slave1 和 slave2 服务器上分别执行

    source /etc/profile

    使发送来的配置生效。

    Hadoop 分布式集群搭建

    解压并改名

    解压Hadoop的压缩包到/usr/local目录下,并将解压好的文件夹改名为 hadoop

     
    
      1. tar -zxvf /opt/hadoop-3.1.0.tar.gz -C /usr/local/
      2. cd /usr/local
      3. mv hadoop-3.1.0/ hadoop

    将Hadoop添加到环境变量中

    vi /etc/profile
    在文件末尾插入如下代码:
    
    1. export HADOOP_HOME=/usr/local/hadoop
    2. export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    最后使修改生效:
    source /etc/profile

    创建文件夹

    1. mkdir /var/hadoop
    2. mkdir /var/hadoop/disk
    3. mkdir /var/hadoop/logs
    4. mkdir /var/hadoop/tmp
    5. mkdir /var/hadoop/namenode
    修改配置文件
    

    进入 hadoop 配置文件夹中:

    cd /usr/local/hadoop/etc/hadoop/
    修改 core-site.xml文件 core-site.xml 是核心配置文件我们需要在该文件中加入HDFSURINameNode的临时文件夹位置,这个临时文件夹在下文中会创建。 在文件末尾的configuration标签中添加代码如下:
    
    1. <configuration>
    2. <property>
    3. <name>fs.defaultFS</name>
    4. <value>hdfs://master:9000</value>
    5. </property>
    6. <property>
    7. <name>hadoop.tmp.dir</name>
    8. <value>/var/hadoop/tmp</value>
    9. </property>
    10. </configuration>

    修改 hdfs-site.xml文件 replication指的是副本数量,我们现在是3个节点,所以是3。属性名dfs.datanode.data.dir代表 datanode 上数据块的物理存储位置,属性名dfs.namenode.name.dir代表 namenode 上存储 hdfs 名字空间元数据

    1. <configuration>
    2. <property>
    3. <name>dfs.datanode.data.dir</name>
    4. <value>/var/hadoop/disk</value>
    5. </property>
    6. <property>
    7. <name>dfs.namenode.name.dir</name>
    8. <value>/var/hadoop/namenode</value>
    9. </property>
    10. <property>
    11. <name>dfs.replication</name>
    12. <value>3</value>
    13. </property>
    14. </configuration>

    修改 yarn-site.xml文件

    1. <configuration>
    2. <property>
    3. <name>yarn.resourcemanager.hostname</name>
    4. <value>master</value>
    5. </property>
    6. <property>
    7. <name>yarn.nodemanager.aux-services</name>
    8. <value>mapreduce_shuffle</value>
    9. </property>
    10. </configuration>

    修改 mapred-site.xml文件

    1. <configuration>
    2. <property>
    3. <name>mapreduce.framework.name</name>
    4. <value>yarn</value>
    5. </property>
    6. </configuration>

    修改 hadoop-env.sh文件 文件主要是配置JDK的位置,在文件中添加语句:

    1. export JAVA_HOME=/usr/local/jdk1.8.0_141

    修改 workers文件 hadoop-2.6 这个文件名为 slaves ,现在3.0版本为 workers。

    1. #vi workers
    2. 添加
    3. master
    4. slave1
    5. slave2

    因为root用户现在还不能启动hadoop,我们来设置一下就可以了。

    /hadoop/sbin路径下:

    cd /usr/local/hadoop/sbin

    。 将

    1. vi start-dfs.sh
    2. vi stop-dfs.sh

    两个文件顶部添加以下参数

    1. #!/usr/bin/env bash
    2. HDFS_DATANODE_USER=root
    3. HADOOP_SECURE_DN_USER=hdfs
    4. HDFS_NAMENODE_USER=root
    5. HDFS_SECONDARYNAMENODE_USER=root

    还有,

    1. vi start-yarn.sh
    2. vi stop-yarn.sh

    顶部也需添加以下:

    1. #!/usr/bin/env bash
    2. YARN_RESOURCEMANAGER_USER=root
    3. HADOOP_SECURE_DN_USER=yarn
    4. YARN_NODEMANAGER_USER=root

    格式

    在使用Hadoop之前我们需要格式化一些hadoop的基本信息。 使用如下命令:

    hadoop namenode -format

    出现如下界面代表成功:

    :wq 

    发送至另外两台服务器

    1. scp -r /usr/local/hadoop/ root@slave1:/usr/local/
    2. scp -r /usr/local/hadoop/ root@slave2:/usr/local/

    启动Hadoop

    接下来我们启动Hadoop

    start-all.sh

    使用 jps 查看 hadoop 进程是否启动成功。 master上:

  • 相关阅读:
    C. Planar Reflections
    使用speedtest-cli进行服务器上传和下载速度测试
    教程 | Datavines 自定义数据质量检查规则(Metric)
    基于jeecgboot流程管理平台的在线表单设计修改成formdesigner(三)
    Jquery,javascript 的处理机制
    Linux 用户注意!GNOME 45 将影响所有扩展!
    Django国际化与本地化指南
    Observability:如何使用 Elastic Agents 把微服务的数据摄入到 Elasticsearch 中
    Vue项目 -- 解决Eslint导致的console报错问题
    k8s之pod控制器
  • 原文地址:https://blog.csdn.net/qq_61604164/article/details/127735377