系统环境

Hadoop 安装

用户准备

  1. 创建hadoop用户(此处按照要求使用hadoop511)

     sudo useradd -m hadoop511 -s /bin/bash
  2. 设置新建用户密码

     sudo passwd hadoop511
  3. 添加到sudo组

     sudo adduser hadoop511 sudo

    User init

  4. 切换到新建用户

    Switch users

  5. 添加SSH密钥证书

    ssh_keygen 步骤,如对安全性等无特殊要求,建议他询问你输入东西的时候,全部回车即可

     cd ~/.ssh/
     ssh-keygen -t rsa
     cat ./id_rsa.pub >> ./authorized_keys

配置Java环境

本处选择的是AdoptOpenJDKOpenJDK8U-jdk_x64_linux_hotspot_8u242b08
由于实验时到Github下载服务器的网络不是太好,采取下载到本地再拉取到服务器的方式,因此wget地址为本地地址

  1. 创建JAVA下载目录

     mkdir -p openjdk
     cd openjdk
  2. 下载JAVA文件

     wget -c https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/8/jdk/x64/linux/OpenJDK8U-jdk_x64_linux_hotspot_*.tar.gz

    create jdk dir

  3. 解压缩并去除二级目录

     tar zxf OpenJDK8U-jdk_x64_linux_hotspot_8u242b08.tar.gz
     mv jdk8u424-b08/* .

    unzip

  4. 拷贝到系统目录

     sudo cp -r ~/openjdk /usr/local/
  5. 修改系统环境变量

    多个变量的分隔符为 冒号 :

     cat >> ~/.bashrc <<'EOF'
     export JAVA_HOME=/usr/local/openjdk
     export JRE_HOME=${JAVA_HOME}/jre
     export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
     export PATH=$PATH:${JAVA_HOME}/bin
     EOF

    edit path

  6. 刷新系统环境变量

     source ~/.bashrc
  7. 测试JAVA配置

     which java

    active path

配置Hadoop

  1. 创建Hadoop下载目录

     mkdir -p ~/hadoop
  2. 下载Hadoop源文件

     wget -c https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz

    download hadoop

  3. 解压缩后去除二级目录拷贝到目标位置

     tar zxf hadoop-3.1.3.tar.gz
     mv hadoop-3.1.3 hadoop
     sudo cp -r ./hadoop /usr/local/

    unzip hadoop

  4. 更改文件拥有者

     cd /usr/local
     sudo chown -R hadoop511 ./hadoop

    chown hadoop

  5. 验证Hadoop可用

     /usr/local/hadoop/bin/hadoop version
  6. 修改系统环境变量

     cat >> ~/.bashrc <<'EOF'
     export PATH=$PATH:/usr/local/hadoop/bin
     EOF

    hadoop path

  7. 刷新系统环境变量

     source ~/.bashrc

Hadoop 非分布式单机配置

Hadoop 默认即为非分布式单机运行

  1. 查看Hadoop自带的样例程序

     hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar

    hadoop example

  2. 测试正则grep

    2.1 将输入文件放入 input 文件夹

    此处使用Hadoop配置文件进行测试

     cd /usr/local/hadoop
     mkdir -p input
     cp -r ./etc/hadoop/*.xml ./input/

    test grep

    2.2 运行Hadoop测试

     hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep ./input ./output 'dfs[a-z.]+'

    hadoop grep test

    2.3 查看测试运行结果

     cat ./output/*

    hadoop grep return

Hadoop 伪分布式配置

这个伪分布式的意思就是其实还是在一台电脑上运行不同的节点,只不过看起来有好多节点,类似于Docker和k8s那种,或者理解成多个VM / WSL虚拟机也差不多感觉

Hadoop的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改的两个文件为 core-site.xmlhdfs-site.xml

  1. 修改 core-site.xml

     cd /usr/local/hadoop
     cp etc/hadoop/core-site.xml etc/hadoop/core-site.xml.bak
     cat > etc/hadoop/core-site.xml <<EOF
     <configuration>
         <property>
             <name>hadoop.tmp.dir</name>
             <value>file:/usr/local/hadoop/tmp</value>
             <description>Abase for other temporary directories.</description>
         </property>
         <property>
             <name>fs.defaultFS</name>
             <value>hdfs://localhost:9000</value>
         </property>
     </configuration>
     EOF
  2. 修改 hdfs-site.xml

     cp etc/hadoop/hdfs-site.xml etc/hadoop/hdfs-site.xml.bak
     cat > etc/hadoop/hdfs-site.xml <<EOF
     <configuration>
         <property>
             <name>dfs.replication</name>
             <value>1</value>
         </property>
         <property>
             <name>dfs.namenode.name.dir</name>
             <value>file:/usr/local/hadoop/tmp/dfs/name</value>
         </property>
         <property>
             <name>dfs.datanode.data.dir</name>
             <value>file:/usr/local/hadoop/tmp/dfs/data</value>
         </property>
     </configuration>
     EOF
  3. Namenode 初始化

     hdfs namenode -format

    namenode init

  4. 开启 NameNode 和 DataNode 守护进程

     ./sbin/start-dfs.sh

    如果说找不到JAVA_HOME但是自己又配置了,你可以执行下面的语句强行告诉Hadoop环境变量

    cat >> /usr/local/hadoop/etc/hadoop/hadoop-env.sh <<'EOF'
    JAVA_HOME=/usr/local/openjdk
    EOF
  5. 查看启动情况

     jps

    start dfs

  6. 网页管理监控

Web界面是运行于Hadoop服务器的,所以其IP地址为安装Hadoop的机器IP地址
可以在终端中使用 ifconfig 查看
至于端口,我安装版本2的时候是50070,但是3的时候使用 netstat 找了一下,发现同功能页面端口改成了9870

web admin

运行Hadooop伪分布式实例

  1. 在文件系统中创建输入文件夹

     hdfs dfs -mkdir -p input
  2. 将测试文件放入文件系统

     hdfs dfs -put ./etc/hadoop/*.xml ./input/

    dfs mkdir ls

  3. 检查文件系统内部测试文件

     hdfs dfs -ls input

    dfs ls

    从Web页面检查也可以

    web check file

  4. 运行实例

     hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'dfs[a-z.]+'

    hadoop example cluser

  5. 查看一下输出结果

     hdfs dfs -cat output/*

    dfs output

    • 这个时候的所有文件操作都在文件系统中发生改写,本地当前目录并无更新,相当于Docker的卷映射
      volum docker
    • 在web界面管理端也可以验证这一点
      web admin dfs
  6. 将文件系统文件取到当前目录

     hdfs dfs -get output ./output
     cat ./output/*

    get cluser file

  7. 关闭从节点

     ./sbin/stop-dfs.sh

    stop-dfs

标签: Hadoop

添加新评论