一、前言
Hadoop是分布式管理、存储、计算的生态系统,Hadoop的框架最核心的设计就是:HDFS和MapReduce,HDFS分布式文件系统(Hadoop Distributed File System)为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。
Spark是专为大规模数据处理而设计的快速通用的计算引擎,Spark是开源的类Hadoop MapReduce的通用并行框架,Spark拥有Hadoop MapReduce所具有的优点,但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
二、安装Docker和Docker-compose
参考以前的文章
三、网络
将Hadoop集群和Spark集群装在同一个网络中,以便Spark能访问到Hadoop中的HDFS,可以将计算的结果保存到HDFS的文件中。
# 创建一个名为anron的docker网络
docker network create --subnet 172.20.0.1/16 anron
如果提示以下错误信息,那就把172.20.0.1换个网段后再试
Error response from daemon: Pool overlaps with other one on this address space
四、Hadoop集群
4.1 集群的组成
hoodoop集群包括有:
- namenode 1个节点
- datanode 2个节点(datanode1,datanode2)
- resourcemanager 1个节点
- nodemanager 1个节点
- historyserver 1个节点
namenode、datanode1、datanode2在hadoop-1.yml文件中
resourcemanager、nodemanager、historyserver在hadoop-2.yml文件中
hadoop.env、hadoop-1.yml、hadoop-2.yml这3个文件放在宿主机的同个目录下
4.2 hadoop.env文件
CORE_CONF_fs_defaultFS=hdfs://namenode:9000
CORE_CONF_hadoop_http_staticuser_user=root
CORE_CONF_hadoop_proxyuser_hue_hosts=*
CORE_CONF_hadoop_proxyuser_hue_groups=*
CORE_CONF_io_compression_codecs=org.apache.hadoop.io.compress.SnappyCodec
HDFS_CONF_dfs_webhdfs_enabled=true
HDFS_CONF_dfs_permissions_enabled=false
HDFS_CONF_dfs_namenode_datanode_registration_ip___hostname___check=false
YARN_CONF_yarn_log___aggregation___enable=true
YARN_CONF_yarn_log_server_url=http://historyserver:8188/applicationhistory/logs/
YARN_CONF_yarn_resourcemanager_recovery_enabled=true
YARN_CONF_yarn_resourcemanager_store_class=org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore
YARN_CONF_yarn_resourcemanager_scheduler_class=org.apache.hadoop.yarn.server.resou