搭建一个单节点的Hadoop

目录

1. 目的

2. 搭建单节点的Hadoop

2.1 支持的系统

2.2 必备的软件

2.2.1 Java

2.2.2 ssh

3. 安装

3.1 下载安装包

3.2 上传、解压和基本配置

4. 不同模式的配置和启动

4.1 本地(独立)模式

4.2 伪分布式模式

4.2.1 运行

4.2.2 单节点YARN

4.3 全分布式模式


1. 目的

详细描述如何搭建和配置一个单节点的Hadoop,以便新手读者能够借此避开搭建Hadoop集群,从而可以很便捷的去直接学习和使用Hadoop的MapReduce和HDFS。

2. 搭建单节点的Hadoop

2.1 支持的系统

GNU/Linux无论作为开发还是生产环境,均是被支持的,事实上,Hadoop已经在2000节点的GNU/Linux集群上展现过它的可用性了。

Windows同样也是被支持的系统。

2.2 必备的软件

2.2.1 Java

Hadoop3.3及以上版本支持Java8和Java11(仅运行时),编译时一定要使用Java8,不支持使用Java11进行编译,3.0.x-3.2.x目前仅支持Java8,2.7.x-2.10.x既支持Java7也支持Java8。

目前Hadoop社区使用OpenJDK作为创建/测试/发布环境,所以是社区建议使用的JDK环境。此外,其它jdk/jvm也是可以正常使用的。

2.2.2 ssh

为了使hadoop的启停脚本能够正常使用,集群节点需安装ssh,同时需启动sshd服务,以便Hadoop脚本能够管理远程的hadoop守护进程。此外,为了更好地对ssh资源进行管理,官网还建议同时安装pdsh服务。

3. 安装

3.1 下载安装包

① 官网地址:http://www.apache.org/dyn/closer.cgi/hadoop/common/

② 选择镜像站:官网通常会推荐国内用户到清华大学的镜像站进行下载

③ 选择版本和镜像进行下载,如:我这里选择了2.10.1版本,下载安装包hadoop-2.10.1.tar.gz,当然,也可以下载源码文件hadoop-2.10.1-src.tar.gz,解压后导入idea自行编译

3.2 上传、解压和基本配置

① 将下载的hadoop-2.10.1.tar.gz压缩包上传到Linux虚拟机或服务器,解压到目录:tar -zxvf hadoop-2.10.1.tar.gz -C /userfolder

② 编辑$HADOOP_HOME/etc/hadoop/hadoop-env.sh,添加JAVA_HOME,如:

③ 在$HADOOP_HOME目录下尝试执行bin/hadoop

这里将打印出hadoop脚本的使用手册。

现在,我们可以以下面支持的三种模式之一启动我们的Hadoop集群:

Local(Standalone) Mode 即本地(独立)模式

Pseudo-Distributed Mode 即伪分布式模式

Fully-Distributed Mode 即全分布式模式

下面将分别对这三种模式进行说明。

4. 不同模式的配置和启动

说明:以下所有命令均在Hadoop的主目录下执行,如果配置了$HADOOP_HOME,则脚本命令均可成功执行,但部分路径参数使用的是本地相对路径,如不切换目录至hadoop主目录,运行时会报错。

4.1 本地(独立)模式

默认情况下,Hadoop被配置为以非分布式模式运行,此时它将作为单个Java进程。这种模式对调试是非常友好的。

例如,下面的命令可以尝试运行mapreduce示例程序:

mkdir input
cp etc/hadoop/*.xml input
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.1.jar grep input output 'dfs[a-z.]+'
cat output/*

输出结果:

4.2 伪分布式模式

4.2.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>

③ 配置ssh免密登录

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

④ 启动

1) 格式化文件系统

bin/hdfs namenode -format

2) 启动NameNode和DataNode

sbin/start-dfs.sh

3) 浏览器访问NameNode的web接口,默认在9870端口(老版本为50070),即:http://localhost:9870/

4) 在HDFS上创建执行上述MapReduce作业所需的目录

# 在hdfs上创建目录
bin/hdfs dfs -mkdir /user
bin/hdfs dfs -mkdir /user/<username>
# 复制本地文件到hdfs指定目录
bin/hdfs dfs -mkdir input
bin/hdfs dfs -put etc/hadoop/*.xml input

5) 执行提供的样例作业

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

6) 检查输出

bin/hdfs dfs -cat output/*

结果同上。

7) 关闭服务

sbin/stop-dfs.sh

4.2.2 单节点YARN

伪分布式模式下,通过设置一些参数和启动ResourceManager, NodeManager,我们可以在YARN上运行MapReduce作业,具体操作如下:

① 修改YARN的配置

1) etc/hadoop/mapred-site.xml

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

2) 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和NodeManager

sbin/start-yarn.sh

③浏览器访问ResourceManager的web接口,默认在8088端口,即:http://localhost:8088/

④ 运行上述作业,并在浏览器观察对应记录

⑤ 关闭YARN

sbin/stop-yarn.sh

4.3 全分布式模式

见下一篇。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值