手动搭建搭建Hadoop虚拟机集群与windows远程开发环境

来源:互联网 发布:新世界网络教育费用 编辑:程序博客网 时间:2024/05/29 18:15

前言

The Apache™ Hadoop® project develops open-source software for reliable, scalable, distributed computing.

The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone to failures.

The project includes these modules:

Hadoop Common: The common utilities that support the other Hadoop modules.
Hadoop Distributed File System (HDFS™): A distributed file system that provides high-throughput access to application data.
Hadoop YARN: A framework for job scheduling and cluster resource management.
Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.

搭建Hadoop虚拟机集群与windows开发环境

最近看视频教程讲到使用eclipse远程调试Hadoop集群,可能由于版本问题,导致eclipse的Hadoop插件一直用不了,人将近崩溃。故从零开始重新搭建一个稳定版本的 Hadoop集群。
环境:
Windows10Pro(安装JDK1.8.0),Ubuntu_server_1604_X64,Hadoop_2.7.1,Eclipse_Oxygen
参考文档:Apache Hadoop 2.7.4

Windows上的准备工作

安装JDK

由于要在Windows上使用eclipse进行打包、调试工作,所以JDK是必须的。注意JDK安装目录不要含空格与中文,示例如下:

C:\DevProgram\Java\jdk1.8.0_144

安装Eclipse Oxygen

在Windows>Preferences>Java>Installed JRES中添加JDK路径:

安装SSH软件SecureCRT 8.1

安装VMware Workstation

在左侧资源管理器新建一个”cluster”文件夹,在里面新建Ubuntu_server虚拟机:

根据需要可限定虚拟网络DHCP服务器的IP池范围:

设置共享文件夹:

安装VMware Tools

创建挂载目录:

sudo mkdir /mnt/cdrom

在虚拟机选项中选择安装VMware Tools,在Ubuntu中以只读方式将光盘镜像挂载到目录下:

mount -tro iso9660 /dev/cdrom /mnt/cdrom

解压:

sudo tar -vxzf /mnt/cdrom/VMwareTools

执行安装:

cd vmware-tools-distrib;./vmware-install.pl;

重启即可。

Ubuntu下的准备工作

安装openssh

sudo apt-get install openssh-server -y

重启虚拟机之后在SecureCRT 8.1中连接到虚拟机。

创建符号链接

在/usr/目录下新建一个文件夹专门用于存放开发工具:

sudo mkdir /usr/DevProgram

并为其设置写权限:

sudo chmod a+w DevProgram

为便于访问共享文件夹,在用户主目录创建符号链接:

ln -s /mnt/hgfs/shared_dir ~/shared_dir

安装JDK

将JDK压缩包复制到/usr/DevProgram并解压:

sudo cp ~/shared_dir/jdk-8u144-linux-x64.tar.gz /usr/DevProgram/cd /usr/DevProgram/sudo tar -vxzf jdk-8u144-linux-x64.tar.gzsudo rm -f jdk-8u144-linux-x64.tar.gz

设置并更新环境变量

sudo nano /etc/environment

在首行加入:

JAVA_HOME=/usr/DevProgram/jdk1.8.0_144

在PATH最后加入(为避免出错,使用绝对路径):

/usr/DevProgram/jdk1.8.0_144/bin

更新环境变量:

source /etc/environment

安装Hadoop

sudo nano /etc/environment
在首行加入:
HADOOP_INSTALL=/usr/DevProgram/hadoop-2.7.1
在PATH后追加(为避免出错,使用绝对路径):
/usr/DevProgram/hadoop-2.7.1/bin:/usr/DevProgram/hadoop-2.7.1/sbin
若还是提示找不到JAVA_HOME,需要在etc/hadoop/hadoop-env.sh中再声明一遍JAVA_HOME路径。

Standalone模式

Hadoop默认模式 即为Standalone模式。

Pesudo-distributed模式

HDFS

配置HADOOP_INSTALL/etc/hadoop/core-site.xml与HADOOP_INSTALL/etc/hadoop/hdfs-site.xml:

<configuration>    <property>        <name>fs.defaultFS</name>        <value>hdfs://master/</value>    </property>    <property>        <name>hadoop.tmp.dir</name>        <value>/home/daya/tmp</value>    </property></configuration>
<configuration>    <property>        <name>dfs.replication</name>        <value>2</value>    </property></configuration>
配置无密登录
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsacat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

格式化文件系统:

hdfs namenode -format

启动名称节点与数据节点的守护进程(一定要注意Hadoop安装文件夹的权限,必须要有写权限):

start-dfs.sh

守护进程的日志文件默认写入$HADOOP_INSTALL/logs文件夹中,名称节点的默认WEB页面地址为:http://localhost:50070/。
停止进程:

stop-dfs.sh
Yarn

配置HADOOP_INSTALL/etc/hadoop/yarn-site.xml与HADOOP_INSTALL/etc/hadoop/mapred-site.xml:

<configuration><!-- Site specific YARN configuration properties -->    <property>       <name>yarn.resourcemanager.hostname</name>        <value>master</value>               </property>    <property>        <name>yarn.nodemanager.aux-services</name>        <value>mapreduce_shuffle</value>    </property></configuration>
<configuration>    <property>        <name>mapreduce.framework.name</name>        <value>yarn</value>    </property></configuration>

启动资源管理器与节点管理器守护进程:

start-yarn.sh

resourcemanager的默认WEB页面地址 :http://192.168.200.134:8088/
停止进程:

stop-yarn.sh

Fully-Distributed模式

在克隆虚拟机之前先删除伪分布模式遗留的数据,否则会影响到集群的运行:

sudo rm -rf ~/tmp/dfs
创建集群并修改hosts

首先克隆虚拟机,这里暂时只克隆一台作为数据节点。将集群打开,修改主机名与hosts文件。
修改主机名,名称节点改为master,数据节点改为slave1:

sodo nano /etc/hostname

修改hosts文件:

sudo nano /etc/hosts

分发hosts文件,因为存在权限问题,所以先分发到slave1的非root用户目录下再移动过去:

sudo scp /etc/hosts daya@slave1:~ssh slave1sudo mv hosts /etc/exit

分发之后记得在slave1中修改127.0.1.1对应的主机名:

配置守护进程

修改四大核心配置文件:etc/hadoop/core-site.xml,etc/hadoop/hdfs-site.xml,etc/hadoop/mapred-site.xml,etc/hadoop/yarn-site.mxl。
core-site.xml,核心变量为fs.defaultFS,其值代表名称节点的地址
hdfs-site.xml,核心变量为dfs.replication,其值代表数据块冗余数
yarn-site.mxl,核心变量为yarn.resourcemanager.hostname,其值代表资源管理器所在主机
mapred-site.xml,核心变量为mapreduce.framework.name,其值代表所用框架

设置从属节点:

sudo nano /usr/DevProgram/hadoop-2.7.1/etc/hadoop/slaves 

分发配置文件

虽然这里只设置了一个从属节点,但为了以后方便,仍使用脚本程序来进行分发。新建脚本并添加权限:

touch distribute_hadoop_conf.shchmod a+x distribute_hadoop_conf.sh

其内容为:

#!/bin/bash for((i=1;i<=1;i++)){        scp -r $HADOOP_INSTALL/etc/hadoop daya@slave$i:$HADOOP_INSTALL/etc}

在更改了HDFS设置之后,需要重新格式化文件系统(注意每次在格式化HDFS时,如有datanode的数据一定要删除,否则会产生ID一致性问题。若不想删除,则需要手动改ID)。然后再启动守护进程,成功后使用jps命令能在master主机上看到NameNode,SecondaryNameNode,ResourceManager三个守护进程,而在slave1节点上能看到DataNode,NodeManager两个守护进程。

搭建windows远程调试环境

下载用于eclipse的hadoop插件——hadoop-eclipse-plugin-2.7.1.jar——并将其放入到eclipse的dropins目录下:

进入eclipse->windows->preferences->hadoop map/reduce,选择hadoop的安装目录(这里省略了在windows下安装hadoop的过程,直接将hadoop解压到你想要的目录下即可):

进入eclipse->windows->perspective->open perspective->other中选择map/reduce:

新建一个hadoop location(注意主机名与端口号即可):

完成后可在项目管理器中远程查看HDFS:

运行示例wordcount程序

在本地新建一个test.txt文件,里面输入几个单词:

将其上传到HDFS(若目录不存在则先mkdir新建目录):

hadoop fs -put test.txt /user/daya/test

执行示例程序(注意输出目录不能存在,否则报错):

yarn jar /usr/DevProgram/hadoop-2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /user/daya/test /user/daya/output

查看结果:

hdfs dfs -cat /user/daya/output/part*

参考资料

Hadoop 2.7.4 Documentation
Hadoop FileSystemShell