AmosCloud

Library

Have a Question?

If you have any question you can ask below or enter what you are looking for!

Hadoop入门

Hadoop入门

1. 准备服务器

1.1 设置静态IP

  • 服务器通常使用远程连接的方式,如果IP不固定每次连接需要先找到对应的IP地址才能连接,所以服务器一般使用固定IP

  • 编辑网卡配置

    vim /etc/sysconfig/network-scripts/ifcfg-ens33
    # 设置ip获取协议为none 或者static
    BOOTPROTO=none
    # 设置ip地址子网掩码网关DNS
    IPADDR=192.168.30.101
    PREFIX=24
    GATEWAY=192.168.30.2
    DNS1=192.168.30.2
    # 重启网络使配置生效
    systemctl restart network

1.2 修改主机名

  1. 查看当前主机名

    hostname
  2. 修改主机名

    hostnamectl set-hostname 主机名
    • 修改之后已经生效,但是终端需要重新连接刷新缓存

1.3 关闭防火墙

  1. 关闭防火墙服务

    systemctl stop firewalld
  2. 禁用防火墙服务的开机自启

    systemctl disable firewalld
  3. 检查防火墙的运行状态

    systemctl status firewalld

1.4 安装JDK

  1. 上传安装包

  2. 解压

    # tar 是linux中的一个压缩和解压工具
    # z 使用gzip压缩格式进行压缩或者解压
    # x 执行解压操作(c执行压缩操作)
    # v 打印解压过程细节
    # f 解压到文件夹中
    tar zxvf jdk-8u291-linux-x64.tar.gz
    # 修改安装包的名称
    mv jdk1.8.0_291 jdk1.8
  3. 配置环境变量

  • Linux的全局环境变量在/etc/profile

  • /etc/profile中添加如下两行内容

# 声明JAVA_HOME
export JAVA_HOME=/opt/jdk1.8
# 将JAVA_HOME的bin目录添加到系统变量PATH中
export PATH=$JAVA_HOME/bin:$PATH
  • 刷新系统变量
source /etc/profile
  1. 验证安装
java -version
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)

1.4 克隆服务器

  • 将配置好的第一台机器克隆成3台

  • 并且为3台机器分别配置主机名和ip

  • 使用终端连接工具尝试同时连接三台机器

1.5 设置主机和IP的映射

  • 修改配置文件/etc/hosts,添加如下内容
# ip  主机名
192.168.30.101  node01
192.168.30.102  node02
192.168.30.103  node03

1.6 配置SSH免密登录

  • SSH是一种用于shell连接的加密连接方式

  • SSH host可以使用ssh协议连接到其他机器

  • 因为Hadoop生态的大数据集群通常需要紧密的协作,主从节点之间需要频繁的连接并执行远程操作,所以需要为所有机器之间配置SSH免密码远程登录

  • SSH免密登录

    1. 为了保险起见,先删除之前残留的ssh密钥文件
rm -rf /root/.ssh
  1. 配钥匙(生成密钥)
ssh-keygen -t rsa
# 输入三个回车
  1. 发钥匙(分发密钥)
ssh-copy-id node01
yes
输入登录密码
ssh-copy-id node02
yes
输入登录密码
ssh-copy-id node03
yes
输入登录密码
  1. 验证免密登录
    使用ssh host方式连接其他机器,如果不需要输入密码说明配置成功

2. 搭建配置并启动Hadoop-HDFS

1. 集群规划

  • 设计每个机器上都启动哪些服务
    当前我们安装HDFS,HDFS有三种服务
  • NameNode : HDFS集群的主节点(1台)
  • DataNode : HDFS集群的从节点(3台)
  • SecondaryNameNode : HDFS集群的辅助节点(1台)
主机名 服务
node01 NameNode,DataNode
node02 DataNode
node03 SecondaryNameNode,DataNode

2. 集群安装

  1. 下载安装包

  2. 解压修改名字

    tar zxvf hadoop-2.7.7.tar.gz
  3. 修改配置文件

    1. 习惯上一般会清理一些不需要用到的文件
      可以将*.cmd全部删除,
      可以将share/doc删除
bin  # 可执行脚本
etc  # 配置文件
include # 底层扩展库,Java程序需要运行在JVM上,JVM使用C/C++,Java程序有时需要附带引用一些C++动态库文件用来扩充程序的功能
lib     # 底层扩展库
libexec # 底层扩展库
LICENSE.txt
NOTICE.txt
README.txt
sbin   #  集群的启动关闭命令
share  # Hadoop依赖的一些Jar包
  1. hadoop-env.sh
export JAVA_HOME=/opt/jdk1.8
  1. core-site.xml
<configuration>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/hadoop-2.7.7/data</value>
    <description>设置hadoop保存数据的目录</description>
  </property>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://node01:9000</value>
    <description>设置HDFS服务使用的NameNode的访问入口链接</description>
  </property>
</configuration>
  1. hdfs-site.xml
<configuration>
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>node03:50090</value>
    <description>设置secondaryNameNode启动服务的机器和端口</description>
  </property>
</configuration>
  1. slaves
    • 设置需要启动DataNode服务的节点
node01
node02
node03
  1. 分发安装包
    • 分发安装包可以使用scp命令
    • scp
# scp与cp类似完成复制操作
# scp 允许使用网络连接的方式将文件或者文件夹发送到远程主机
# 语法  scp  源文件(目录)  目标主机:目标目录
# -r 参数递归发送文件夹
# -q 不显示发送细节
scp  -rq  hadoop-2.7.7  node02:/opt
  1. 配置环境变量
    • 修改/etc/profile添加如下内容
export HADOOP_HOME=/opt/hadoop-2.7.7
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
  • 刷新配置文件,使环境变量生效
source /etc/profile
  1. 启动服务

    1. HDFS第一次启动前需要进行格式化
hdfs namenode -format
  1. 启动HDFS集群
# 在集群中一台机器执行启动命令
start-dfs.sh
  1. 关闭HDFS集群
# 在集群中一台机器执行启动命令
stop-dfs.sh
  1. 验证启动状态
# jdk的bin目录中有一个jps命令可以用来检查当前机器中所有的正在执行的Jvm程序
# 例如:
[root@node01 ~]# jps
48560 Jps
48088 NameNode
48223 DataNode
# 还可以使用 -l参数查看更加详细的信息
[root@node01 ~]# jps -l
48088 org.apache.hadoop.hdfs.server.namenode.NameNode
49163 sun.tools.jps.Jps
48223 org.apache.hadoop.hdfs.server.datanode.DataNode
  • 正常启动后,所有机器的进程状态如下
主机名 服务
node01 NameNode,DataNode
node02 DataNode
node03 SecondaryNameNode,DataNode
  • 通过访问NameNode的WebUI,也可以监控集群的启动状态
    node01:50070