Hadoop学习笔记(一)

前言

学习前准备工作

  • 下载JDK(jdk-8u211-linux-x64)
  • 下载hadoop(hadoop-3.1.2)
  • 找一台虚拟机(本教程基于阿里云低配版ECS)

安装过程

  • jdk安装大家百度下,关键就是配置下环境变量
# vim ~/.bashrc
// 文件末尾添加如下内容
export JAVA_HOME=/opt/app/jdk1.8.0_211
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

// 加载环境变量
# source ~/.bashrc

// 测试是否安装成功(显示如下内容安装成功)
# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

  • 安装hadoop
// 参考文档:http://hadoop.apache.org/docs/r3.1.2/hadoop-project-dist/hadoop-common/SingleCluster.html
// 下载安装包(如果链接不可用 可以在官网找到下载链接)
# wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz
// 解压安装包
# tar -zxvf hadoop-3.1.2.tar.gz
# mv hadoop-3.1.2 /opt/app/
# cd /opt/app/hadoop-3.1.2

// 显示如下内容表示已经安装成功
# ./bin/hadoop version
Hadoop 3.1.2
Source code repository https://github.com/apache/hadoop.git -r 1019dde65bcf12e05ef48ac71e84550d589e5d9a
Compiled by sunilg on 2019-01-29T01:39Z
Compiled with protoc 2.5.0

// 初步安装完成

配置

hadoop 支持三种模式 介绍

  • Local (Standalone) Mode
    下载Hadoop在系统中,默认情况下之后,它会被配置在一个独立的模式,用于运行Java程序。
  • Pseudo-Distributed Mode
    这是在单台机器的分布式模拟。Hadoop守护每个进程,如 hdfs, yarn, MapReduce 等,都将作为一个独立的java程序运行。这种模式对开发非常有用。
  • Fully-Distributed Mode
    这种模式是完全分布式的最小两台或多台计算机的集群。

Local (Standalone) Mode

  • 准备工作
// 添加环境变量
# Hadoop Environment Variables
export HADOOP_HOME=/opt/app/hadoop-3.1.2
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

# hadoop version 
// 显示如下内容
Hadoop 3.1.2
Source code repository https://github.com/apache/hadoop.git -r 1019dde65bcf12e05ef48ac71e84550d589e5d9a
Compiled by sunilg on 2019-01-29T01:39Z
Compiled with protoc 2.5.0
From source with checksum 64b8bdd4ca6e77cce75a93eb09ab2a9

// 即环境变量添加正常
  • 测试本地模式
# cd /opt/app/hadoop-3.1.2
# mkdir input
# cp etc/hadoop/*.xml input/

// 执行单机分析
# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.2.jar grep input output 'dfs[a-z.]+'

// 查看结果文件
# cat output/*
// 输出结果
1	dfsadmin
  • Pseudo-Distributed Operation

伪分布式模式下在单节点上运行,其中每个Hadoop守护程序在单独的Java进程中运行。

  1. 配置文件修改
    etc/hadoop/core-site.xml:
 <configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

etc/hadoop/hdfs-site.xml:

<configuration>
   <property>
       <name>dfs.replication</name>
       <value>1</value>
   </property>
</configuration>
  1. 设置免密码登录
// 检查本地是否可以免密码登录
# ssh localhost
// 不可以登录则走下面的步骤
# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# chmod 0600 ~/.ssh/authorized_keys

// 再次测试完成会显示登录完成
# ssh localhost

  1. 执行

以下说明是在本地运行MapReduce作业

准备工作不能少

将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数 不然启动的时候会有各种报错

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

如以下这样的报错
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.

// 1. 格式化文件系统
# hdfs namenode -format
// 2.启动NameNode DateNode
# start-dfs.sh

// 执行jps 命令 会显示以下内容 证明启动成功
# jps
25314 SecondaryNameNode
24963 NameNode
25444 Jps
25092 DataNode

// 3. 访问NameNode - http://localhost:9870/
//  以上几步骤一般不会有什么问题

至此完成hadoop 的安装。
本人才疏学浅, 也在学习过程中,会持续更新该系列的文章。欢迎大家一起学习交流。

原文地址:https://www.cnblogs.com/logy/p/11123874.html