大数据之Hadoop 安装(macOS Mojave)

本教程采用 CDH 版,以避免版本依赖冲突导致错误,本教程同样适用于 Linux(推荐 CentOS);
本教程 Hadoop 使用伪分布式模式

Hadoop 运行模式

本地模式(单机模式)

Hadoop 默认模式为非分布式模式(本地模式),无需进行配置即可运行,即单 java 进程,方便进行调试。

伪分布式模式

Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点即作为 NameNode,也作为 DataNode,同时,读取的是 HDFS 中的文件

分布式模式

使用多个节点构成集群环境来运行 Hadoop

Hadoop CDH版本下载

下载地址:https://archive.cloudera.com/cdh5/cdh/5/
版本:hadoop-2.6.0-cdh5.9.3.tar.gz

环境准备

ssh 免密登录(此步骤可以忽略,但 Hadoop 每次启动都需要输入密码)

终端执行以下命令:

zhangzhaodeMacBook-Pro:~ zhangzhao$ ssh-keygen -t rsa -P "" //一直回车即可
zhangzhaodeMacBook-Pro:~ zhangzhao$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

验证免密登录

zhangzhaodeMacBook-Pro:~ zhangzhao$ ssh localhost
Last login: Fri Jan  4 13:45:54 2019 //出现这个结果表示免密登录成功

JDK 安装

JDK 版本:
        macOS:jdk-8u192-macosx-x64.dmg
        Linux:jdk-8u192-linux-x64.tar.gz
macOS 双击安装,Linux 解压即可

JDK 环境变量配置:

macOS:

在系统根目录(~)下打开.bash_profile

zhangzhaodeMacBook-Pro:~ zhangzhao$ vim .bash_profile

添加以下内容:

  1 JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/
  2 CLASSPAHT=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  3 PATH=$JAVA_HOME/bin:$PATH:
  4 export JAVA_HOME
  5 export CLASSPATH
  6 export PATH

最后使环境变量生效:

zhangzhaodeMacBook-Pro:~ zhangzhao$ source .bash_profile

JDK 验证:

zhangzhaodeMacBook-Pro:~ zhangzhao$ java -version
java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode) java -version

Linux(有默认的 openJDK 的话,可以忽略):

在系统根目录(~)下打开.bash_profile

vim .bash_profile

添加以下内容:

JAVA_HOME=/usr/lib/jdk1.8.0_192
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar 
PATH=$JAVA_HOME/bin:$HOME/bin:$HOME/.local/bin:$PATH

最后使环境变量生效:

source .bash_profile

JDK 验证:

java -version
java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode) java -version

下载 Hadoop

使用 wget 命令,也可以手动下载
我这里下载到 /Users/zhangzhao/develop/hadoop

zhangzhaodeMacBook-Pro:hadoop zhangzhao$ wget https://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.9.3.tar.gz

mac 系统默认没有 wget,使用 Homebrew 安装(Linux 请忽略):

zhangzhaodeMacBook-Pro:~ zhangzhao$ brew install wget

Homebrew官网
安装Homebrew(Linux 请忽略):

zhangzhaodeMacBook-Pro:~ zhangzhao$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Homebrew使用请参考官网

解压 Hadoop

zhangzhaodeMacBook-Pro:hadoop zhangzhao$ zhangzhao$ tar -zxvf hadoop-2.6.0-cdh5.9.3.tar.gz
zhangzhaodeMacBook-Pro:hadoop zhangzhao$ ls
hadoop-2.6.0-cdh5.9.3
hadoop-2.6.0-cdh5.9.3.tar.gz

Hadoop 目录结构

zhangzhaodeMacBook-Pro:hadoop zhangzhao$ cd hadoop-2.6.0-cdh5.9.3/
zhangzhaodeMacBook-Pro:hadoop-2.6.0-cdh5.9.3 zhangzhao$ ls
LICENSE.txt        cloudera                     lib
NOTICE.txt         etc                          libexec
README.txt         examples                     sbin
bin                examples-mapreduce1          share
bin-mapreduce1     include                      src

bin:存放基础的管理脚本和使用脚本,这些脚本是sbin目录下管理脚本的基础实现,用户可以用这些脚本管理和使用hadoop
etc:存放包括core-site.xml、hdfs-site.xml、mapred-site.xml和yarn-site.xml等配置文件。.template是模板文件。
lib:存放Hadoop的本地库(对数据进行压缩解压缩功能)
sbin:存放启动或停止Hadoop集群相关服务的脚本
share:存放Hadoop的依赖jar包、文档、和官方案例
libexec:各个服务所对应的shell配置文件所在目录,可用于配置日志输出目录、启动参数(比如JVM参数)等基本信息

Hadoop 核心配置文件配置

配置文件目录:~/develop/hadoop/hadoop-2.6.0-cdh5.9.3/etc/hadoop

hadoop-env.sh

添加 JDK 安装目录路径:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/
vim hadoop-env.sh
hadoop-env.sh

core-site.xml

添加如下配置:

<!-- hdfs 端口 -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:8020</value>
</property>
<!-- hadoop 临时数据目录 -->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/Users/zhangzhao/develop/tmp</value>
</property>
vim core-site.xml
core-site.xml

hdfs-site.xml

添加如下配置:

<configuration>
    <!-- hdfs 数据副本数目  -->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <!-- hdfs 存储 fsimage 的地方  -->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/Users/zhangzhao/develop/tmp/dfs/name</value>
    </property>
    <!-- hdfs 数据存放 block 的地方  -->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/Users/zhangzhao/develop/tmp/dfs/data</value>
    </property>
</configuration>
vim hdfs-site.xml
hdfs-site.xml

Hadoop 环境变量

vim ~/.bash_profile

添加如下配置:

# added by Hadoop installer
export HADOOP_HOME=/Users/zhangzhao/develop/hadoop/hadoop-2.6.0-cdh5.9.3
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

使配置生效

source ~/.bash_profile

HDFS 格式化与启动停止

格式化 HDFS

注意:这一步操作,只在初始化时执行一次,如果每次都格式化,那么 HDFS 上的数据会全部清空。

zhangzhaodeMacBook-Pro:bin zhangzhao$ hdfs namenode -format

出现以下日志表示格式化成功:


HDFS 格式化日志

启动 HDFS

zhangzhaodeMacBook-Pro:hadoop-2.6.0-cdh5.9.3 zhangzhao$ cd sbin/
zhangzhaodeMacBook-Pro:sbin zhangzhao$ start-dfs.sh 
19/01/05 12:43:51 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [localhost]
localhost: starting namenode, logging to /Users/zhangzhao/develop/hadoop/hadoop-2.6.0-cdh5.9.3/logs/hadoop-zhangzhao-namenode-zhangzhaodeMacBook-Pro.local.out
localhost: starting datanode, logging to /Users/zhangzhao/develop/hadoop/hadoop-2.6.0-cdh5.9.3/logs/hadoop-zhangzhao-datanode-zhangzhaodeMacBook-Pro.local.out
Starting secondary namenodes [account.jetbrains.com]
account.jetbrains.com: starting secondarynamenode, logging to /Users/zhangzhao/develop/hadoop/hadoop-2.6.0-cdh5.9.3/logs/hadoop-zhangzhao-secondarynamenode-zhangzhaodeMacBook-Pro.local.out
19/01/05 12:44:06 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

验证 HDFS 启动是否成功

zhangzhaodeMacBook-Pro:sbin zhangzhao$ jps
87715 NameNode
87781 DataNode
87871 SecondaryNameNode
87950 Jps

出现以上三个 node,表示成功
访问 HDFS:http://localhost:50070

HDFS 地址

停止 HDFS

zhangzhaodeMacBook-Pro:sbin zhangzhao$ stop-dfs.sh 
19/01/05 12:47:47 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Stopping namenodes on [localhost]
localhost: stopping namenode
localhost: stopping datanode
Stopping secondary namenodes [account.jetbrains.com]
account.jetbrains.com: stopping secondarynamenode
19/01/05 12:48:05 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
zhangzhaodeMacBook-Pro:sbin zhangzhao$ jps
88263 Jps

启动 Hadoop 集群

zhangzhaodeMacBook-Pro:sbin zhangzhao$ start-all.sh 
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
19/01/05 13:13:07 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [localhost]
localhost: namenode running as process 88426. Stop it first.
localhost: datanode running as process 88500. Stop it first.
Starting secondary namenodes [account.jetbrains.com]
account.jetbrains.com: secondarynamenode running as process 88592. Stop it first.
19/01/05 13:13:10 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
starting yarn daemons
starting resourcemanager, logging to /Users/zhangzhao/develop/hadoop/hadoop-2.6.0-cdh5.9.3/logs/yarn-zhangzhao-resourcemanager-zhangzhaodeMacBook-Pro.local.out
localhost: starting nodemanager, logging to /Users/zhangzhao/develop/hadoop/hadoop-2.6.0-cdh5.9.3/logs/yarn-zhangzhao-nodemanager-zhangzhaodeMacBook-Pro.local.out
zhangzhaodeMacBook-Pro:sbin zhangzhao$ jps
88592 SecondaryNameNode
88500 DataNode
89591 NodeManager
88426 NameNode
89519 ResourceManager
89615 Jps

jps 命令出现以上 5 个服务表示正常

停止 Hadoop 集群

zhangzhaodeMacBook-Pro:sbin zhangzhao$ start-all.sh 
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
19/01/05 13:15:11 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [localhost]
localhost: namenode running as process 88426. Stop it first.
localhost: datanode running as process 88500. Stop it first.
Starting secondary namenodes [account.jetbrains.com]
account.jetbrains.com: secondarynamenode running as process 88592. Stop it first.
19/01/05 13:15:14 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
starting yarn daemons
resourcemanager running as process 89519. Stop it first.
localhost: nodemanager running as process 89591. Stop it first.
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容

  • 终极算法 关注微信号每天收听我们的消息终极算法为您推送精品阅读 前言 Hadoop 在大数据技术体系中的地位至关...
    Yespon阅读 129,809评论 12 168
  • Zookeeper用于集群主备切换。 YARN让集群具备更好的扩展性。 Spark没有存储能力。 Spark的Ma...
    Yobhel阅读 7,263评论 0 34
  • 前言 Hadoop在大数据技术体系中的地位至关重要,Hadoop是大数据技术的基础,对Hadoop基础知识的掌握的...
    数据萌新阅读 1,455评论 1 1
  • 经过一系列的前期环境准备,现在可以开始Hadoop的安装了,在这里去apache官网下载2.7.3的版本http:...
    欢醉阅读 1,663评论 8 28
  • 今天无意中做了一个小测试:九型人格你属于哪一种?这一做完,结果立马就出来了--万事和谐型。看到这个结果也是醉了,啥...
    安得广厦阅读 266评论 0 1