Hadoop v3.1.0 伪分布式环境搭建

    基础环境的搭建参考:Hadoop学习准备工作 - Centos 7 系统安装与配置


一、 伪分布式

    伪分布式是指:hadoop的守护进程以独立进程形式运行在单一节点上。

二、 Hadoop部署与配置

1、 hadoop部署

    从官网获取 hadoop稳定版,安装到指定目录下:/home/root

tar -zxvf hadoop-3.1.0.tar.gz

    等待解压缩完成后vi /etc/profile 编辑环境变量 -->

export HADOOP_HOME=/home/root/hadoop-3.1.0

    保存退出,执source /etc/profile使变量生效。

    编辑 vi etc/hadoop/hadoop-env.sh -->

# JAVA_HOME
export JAVA_HOME=/home/root/jdk/jdk1.8.0_171

# USERS
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root

export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

    保存退出后,执行 bin/hadoop 验证 hadoop 的可用性:

[root@skynet hadoop-3.1.0]# bin/hadoop version
Hadoop 3.1.0
Source code repository https://github.com/apache/hadoop -r 16b70619a24cdcf5d3b0fcf4b58ca77238ccbe6d
Compiled by centos on 2018-03-30T00:00Z
Compiled with protoc 2.5.0
From source with checksum 14182d20c972b3e2105580a1ad6990
This command was run using /home/root/hadoop-3.1.0/share/hadoop/common/hadoop-common-3.1.0.jar

2、 文件基础配置(TODO:更多配置待补充)

1) vi etc/hadoop/core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

2) vi etc/hadoop/hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

3、 运行hadoop

1))hdfs文件系统格式化

$ bin/hdfs namenode -format

2) 启动namenode和datanode守护进程

$ sbin/start-dfs.sh

    等待启动完成后,jps查看进程:

[root@skynet hadoop-3.1.0]# sbin/start-dfs.sh 
Starting namenodes on [localhost]
上一次登录:四 4月 26 08:38:52 CST 2018从 192.168.9.1pts/1 上
Starting datanodes
上一次登录:四 4月 26 08:53:37 CST 2018pts/1 上
skynet: Warning: Permanently added 'skynet' (ECDSA) to the list of known hosts.
Starting secondary namenodes [skynet]
上一次登录:四 4月 26 08:53:40 CST 2018pts/1 上
[root@skynet hadoop-3.1.0]# jps
2512 Jps
2145 DataNode
2028 NameNode
2334 SecondaryNameNode
[root@skynet hadoop-3.1.0]# 

    此时可以访问namenode的web服务:http://localhost:9870/,查看namenode健康状况,可以观察到有一个存活的datanode节点。


4、 执行mapreduce任务

# 在分布式文件系统中创建用户目录(作用待了解)
$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/root

# 拷贝数据到分布式文件系统中
$ bin/hdfs dfs -mkdir input
$ bin/hdfs dfs -put etc/hadoop/*.xml input

# 运行hadoop提供的mapreduce任务
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.0.jar grep /input output 'dfs[a-z.]+'

# 拷贝任务执行结果到本地文件系统中
$ bin/hdfs dfs -get output output
$ cat output/*

# 或直接从分布式文件系统中查看计算结果
# $ bin/hdfs dfs -cat output/*

计算结果:

[root@skynet hadoop-3.1.0]# bin/hdfs dfs -cat output/*
1	dfsadmin
1	dfs.replication

5、 YARN 资源管理器

    在上述配置的基础上,可以启动YARN资源协调者(YARN待了解),在YARN上运行mapreduce任务。

    文件配置 1:vi etc/hadoop/mapred-site.xml:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

<configuration>
    <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>
</configuration>

    文件配置 2:vi etc/hadoop/yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

    启动ResourceManager daemon and NodeManager daemon:

 $ sbin/start-yarn.sh

    jps命令查看进程:

[root@skynet hadoop-3.1.0]# sbin/start-yarn.sh 
Starting resourcemanager
上一次登录:四 4月 26 08:53:55 CST 2018pts/1 上
Starting nodemanagers
上一次登录:四 4月 26 09:20:27 CST 2018pts/1 上
[root@skynet hadoop-3.1.0]# jps
2145 DataNode
2965 NodeManager
3243 Jps
2028 NameNode
2829 ResourceManager
2334 SecondaryNameNode

    访问ResourceManager的 web服务,从集群节点管理矩阵中能看到存活结点数为1。

    确认yarn资管启动成功后,再次运行mapreduce程序

# 再次运行之前移除已生成的output,否则报错
$ bin/hdfs dfs -rm -r /output

# 运行hadoop提供的mapreduce任务
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.0.jar grep /input output 'dfs[a-z.]+'

猜你喜欢

转载自blog.csdn.net/r_aider/article/details/80076779