前言
学习前准备工作
- 下载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进程中运行。
- 配置文件修改
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>
- 设置免密码登录
// 检查本地是否可以免密码登录
# 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
- 执行
以下说明是在本地运行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 的安装。
本人才疏学浅, 也在学习过程中,会持续更新该系列的文章。欢迎大家一起学习交流。