Mac M1搭建hadoop+spark集群教程

最近一直在搞Mac虚拟机,尝试了parallel、vmware、utm,感觉效果都不是很好,踩了了很多很多坑,parallel破解直接劝退我,并且也不是很稳定;wmware for m1刚开始装了一次挺不错的,但是因为我集群磁盘太小扩展磁盘大小的时候,系统就这样崩了,不管最后怎么装都没有用;最后我转战utm,刚开始因为不熟悉utm也踩了很多坑,弃了一段时间,vmware实在装不了了,我又来找utm了【utm yyds 轻便又好用又不花钱(后续发现的问题是容易闪退),推荐mac m1用户使用】。

ps:建议utm只装3台主机,我装了4台会有闪退的问题,之后我delete掉一台目前还没出现闪退的问题。

写在前面:

我的镜像:链接: https://pan.baidu.com/s/1EKf4hX3ODreDnrLp02t8cw 提取码: aek0

utm:链接: https://pan.baidu.com/s/1vj6EB2iq4dlxJqiHK2hoyQ 提取码: 5kd0

utm

镜像下载完,utm直接打开,新建虚拟机,设置一下系统参数。

在这里插入图片描述
在这里插入图片描述

磁盘大小自己按照需要来,我刚开始搞的20g,根本就不够,我这次扩展到40g

在这里插入图片描述

其他没什么要改的了。新建之后打开虚拟机进行安装就行了。

在这里插入图片描述

进入到桌面安装教程,按照自己的需要来。
在这里插入图片描述

之后会要求你重启,这时候我们点击重新启动。系统直接黑屏了,也没有启动的迹象,这时候,不要慌,咱点击左上角的这个按钮。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
关机之后,咱需要把之前导入的镜像删除,不然会一直重复安装ubuntu【这其实跟u盘安装windows一个道理】。
在这里插入图片描述
然后再启动虚拟机就可以咯,出现红框下面的就代表成功了哦。
在这里插入图片描述在这里插入图片描述

大功告成!在mac m1虚拟机上面花费的时候特别多,一直没有找到合适的,utm目前是最稳定的,完成的教程写在前面,希望我的教程可以节约大家的时间。

集群搭建

集群节点情况:

Master: 50G,其他worker:40G

master:192.168.64.9
worker1:92.168.64.10
worker2:192.168.64.11

所需安装包:

链接: https://pan.baidu.com/s/1_ldD55oaomnNgDPgvXxz9A 提取码: mqia
在这里插入图片描述

ps:我这jdk是arm版本的哦,安装的时候注意自己电脑的系统架构,但是如果是m1芯片那就没问题。

安装ssh(所有节点)

sudo apt install openssh-server

测试一下:ssh localhost能通就行。

接下来将所有所需的安装包提前scp给master

scp * lulu@192.168.64.9:~/tools/

在这里插入图片描述

绑定ip

  • 修改/etc/hosts,添加master与worker的ip绑定,并且注释127.0.0.1 master(不然会影响集群,或者改成 128.0.0.1)【三台机子都要做】
    在这里插入图片描述

​ 我在装worker端时hostname已经指定好了,所以不需要再修改hostname计算机名。如果有差异的话修改/etc/hostname。

免密登陆

master端

  • 用rsa生成密钥,一路回车

    ssh-keygen -t rsa
    
  • 进入.ssh目录,将公钥追加到authorized_keys

    cat id_rsa.pub >> authorized_keys
    
  • 登陆其他主机,将其他主机的公钥内容都拷贝到master主机的authorized_keys中

    ssh-copy-id -i master
    

在这里插入图片描述

​ 这样master主机中就有了所有的公钥。

  • 修改authorized_keys权限

    chmod 600 authorized_keys 
    
  • 将该文件拷贝到worker主机中

    scp authorized_keys worker1:~/.ssh/
    

在这里插入图片描述

ssh免密登陆搞定!

hadoop集群搭建

jdk安装
  • 解压

    tar -zxvf jdk-8u321-linux-aarch64.tar.gz -C  ~/dev
    

​ 创建软链接(类似起了个别名)

ln -s jdk1.8.0_321/ jdk1.8
  • 配置环境变量(用户级别)vim ~/.bashrc

    # jdk
    export JAVA_HOME=/home/lulu/dev/jdk1.8
    export JRE_HOME=/home/lulu/dev/jdk1.8/jre
    export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
    export PATH=$JAVA_HOME/bin:$PATH
    
  • 更新环境变量

    source ~/.bashrc
    
  • 检查

    java -version
    

在这里插入图片描述

hadoop
  • 解压

    tar -zxvf hadoop-2.6.0.tar.gz -C  ~/dev
    

​ 创建软链接

ln -s hadoop-2.6.0/ hadoop

​ 在hadoop主目录下:

mkdir tmp
mkdir dfs
mkdir dfs/name
mkdir dfs/node
mkdir dfs/data
  • hadoop配置

    以下操作都在hadoop/etc/hadoop下进行。
    在这里插入图片描述

    • 编辑hadoop-env.sh文件,修改JAVA_HOME环境配置

      # export JAVA_HOME=${JAVA_HOME}
      export JAVA_HOME=/home/lulu/dev/jdk1.8
      
    • 编辑core-site.xml文件

      master是主机名

      hadoop.tmp.dir是刚刚创建的tmp文件夹/home/lulu/dev/hadoop/tmp

      <configuration>
       <property>  
        <name>fs.defaultFS</name>  
        <value>hdfs://master:9000</value>  
       </property>  
       <property>  
        <name>io.file.buffer.size</name>  
        <value>131072</value>  
       </property>  
       <property>  
        <name>hadoop.tmp.dir</name>  
        <value>file:/home/lulu/dev/hadoop/tmp</value>  
        <description>Abasefor other temporary directories.</description>  
       </property>  
       <property>  
        <name>hadoop.proxyuser.spark.hosts</name>  
        <value>*</value>  
       </property>  
      <property>  
        <name>hadoop.proxyuser.spark.groups</name>  
        <value>*</value>  
       </property> 
      </configuration>
      
    • 编辑hdfs-site.xml文件

      master是主机名

      dfs.namenode.name.dir;dfs.namenode.data.dir是刚刚创建的文件夹:

      /home/lulu/dev/hadoop/dfs/name

      /home/lulu/dev/hadoop/dfs/data

      <configuration>
      <property>  
        <name>dfs.namenode.secondary.http-address</name>  
        <value>master:9001</value>  
       </property>  
        <property>  
         <name>dfs.namenode.name.dir</name>  
         <value>file:/home/lulu/dev/hadoop/dfs/name</value>  
       </property>  
       <property>  
        <name>dfs.datanode.data.dir</name>  
        <value>file:/home/lulu/dev/hadoop/dfs/data</value>  
        </property>  
       <property>  
        <name>dfs.replication</name>  
        <value>3</value>  
       </property>  
       <property>  
        <name>dfs.webhdfs.enabled</name>  
        <value>true</value>  
       </property>  
      </configuration>
      
    • 编辑mapred-site.xml文件

      复制该文件并且重命名

      cp mapred-site.xml.template mapred-site.xml
      
      <configuration>
      <property>  
         <name>mapreduce.framework.name</name>  
         <value>yarn</value>  
       </property>  
       <property>  
        <name>mapreduce.jobhistory.address</name>  
        <value>master:10020</value>  
       </property>  
       <property>  
        <name>mapreduce.jobhistory.webapp.address</name>  
        <value>master:19888</value>  
       </property>  
      </configuration>
      
    • 编辑yarn-site.xml文件

      <configuration>
      <!-- Site specific YARN configuration properties -->
      <property>  
         <name>yarn.nodemanager.aux-services</name>  
         <value>mapreduce_shuffle</value>  
        </property>  
        <property>  
         <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>  
         <value>org.apache.hadoop.mapred.ShuffleHandler</value>  
        </property>  
        <property>  
         <name>yarn.resourcemanager.address</name>  
         <value>master:8032</value>  
        </property>  
        <property>  
         <name>yarn.resourcemanager.scheduler.address</name>  
         <value>master:8030</value>  
        </property>  
        <property>  
         <name>yarn.resourcemanager.resource-tracker.address</name>  
         <value>master:8035</value>  
        </property>  
        <property>  
         <name>yarn.resourcemanager.admin.address</name>  
         <value>master:8033</value>  
        </property>  
        <property>  
         <name>yarn.resourcemanager.webapp.address</name>  
         <value>master:8088</value>  
        </property>  
      </configuration>
      
    • 修改slaves文件,添加集群节点

      master
      worker1
      worker2
      
  • hadoop集群搭建

    将配置的hadoop以及jdk以及环境变量文件都传送给其他worker。

    我的dev里面包含了hadoop以及jdk的文件夹噢。

    scp -r dev lulu@worker1:~/
    scp -r dev lulu@worker2~/
    

    看看worker1文件,检查传过来了没有,发现软链接不见了,文件夹都是两份,咱删除一份就行了,删除hadoop-2.6.0 jdk1.8.0_321,

    后续启动的时候会说找不到hadoop-2.6.0/xxx文件,所以我们需要再建立hadoop-2.6.0软链接ln -s hadoop hadoop-2.6.0
    在这里插入图片描述

    scp -r .bashrc lulu@worker1:~/
    scp -r .bashrc lulu@worker2:~/
    

    之后在每个主机更新一下环境变量就行 source ~/.bashrc

  • hadoop集群启动

    • 先格式化文件系统,在hadoop/bin下进行

      lulu@master:~/dev/hadoop/bin$ ./hadoop namenode -format
      
    • 启动hadoop,在hadoop/sbin下进行

      lulu@master:~/dev/hadoop/sbin$ ./start-all.sh 
      

      出现下列信息,启动成功。

      This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
      22/03/21 15:43:56 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
      Starting namenodes on [master]
      master: starting namenode, logging to /home/lulu/dev/hadoop-2.6.0/logs/hadoop-lulu-namenode-master.out
      master: starting datanode, logging to /home/lulu/dev/hadoop-2.6.0/logs/hadoop-lulu-datanode-master.out
      worker1: starting datanode, logging to /home/lulu/dev/hadoop/logs/hadoop-lulu-datanode-worker2.out
      worker2: starting datanode, logging to /home/lulu/dev/hadoop/logs/hadoop-lulu-datanode-worker2.out
      Starting secondary namenodes [master]
      master: starting secondarynamenode, logging to /home/lulu/dev/hadoop-2.6.0/logs/hadoop-lulu-secondarynamenode-master.out
      22/03/21 15:44:09 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 /home/lulu/dev/hadoop-2.6.0/logs/yarn-lulu-resourcemanager-master.out
      worker1: starting nodemanager, logging to /home/lulu/dev/hadoop/logs/yarn-lulu-nodemanager-worker2.out
      master: starting nodemanager, logging to /home/lulu/dev/hadoop-2.6.0/logs/yarn-lulu-nodemanager-master.out
      worker2: starting nodemanager, logging to /home/lulu/dev/hadoop/logs/yarn-lulu-nodemanager-worker2.out
      

    在这里插入图片描述

  • hadoop集群检查

    • 8088端口
      在这里插入图片描述
    • 50070端口
      在这里插入图片描述

spark集群搭建

scala安装
tar -zxvf scala-2.11.8.tgz -C ~/dev

建立软链接:ln -s scala-2.11.8/ scala

配置环境变量

# scala
export SCALA_HOME=/home/lulu/dev/scala

export PATH=$JAVA_HOME/bin:$SCALA_HOME/bin:$PATH
spark安装
tar -zxvf spark-2.0.0-bin-hadoop2.6.tgz -C ~/dev/

建立软链接:ln -s spark-2.0.0-bin-hadoop2.6/ spark

配置环境变量

# spark
export SPARK_HOME=/home/lulu/dev/spark

export PATH=$JAVA_HOME/bin:$SCALA_HOME/bin:$SPARK_HOME/bin:$PATH

spark配置

进入spark下的conf文件中

  • 复制spark-env

    cp spark-env.sh.template spark-env.sh
    
  • 编辑spark-env.sh

    export JAVA_HOME=/home/lulu/dev/jdk1.8
    export SPARK_MASTER_IP=master
    export SPARK_WORKER_MEMORY=8g
    export SPARK_WORKER_CORES=4
    export SPARK_EXECUTOR_MEMORY=4g
    export HADOOP_HOME=/home/lulu/dev/hadoop
    export HADOOP_CONF_DIR=/home/lulu/dev/hadoop/etc/hadoop
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/lulu/dev/jdk1.8/jre/lib/amd64
    
  • 编辑slaves

    cp slaves.template slaves
    master
    worker1
    worker2
    
spark配置集群

将spark以及scala以及环境变量都scp到其他节点

scp -r spark-2.0.0-bin-hadoop2.6/ lulu@worker1:~/dev
scp -r spark-2.0.0-bin-hadoop2.6/ lulu@worker2:~/dev
scp -r scala-2.11.8/ lulu@worker1:~/dev
scp -r scala-2.11.8/ lulu@worker2:~/dev
scp -r .bashrc  lulu@worker1:~/
scp -r .bashrc  lulu@worker2:~/

对穿过去的文件建立软链接,并且更新环境变量。

spark集群启动

在spark/sbin下进行

./start-all.sh
starting org.apache.spark.deploy.master.Master, logging to /home/lulu/dev/spark/logs/spark-lulu-org.apache.spark.deploy.master.Master-1-master.out
worker2: starting org.apache.spark.deploy.worker.Worker, logging to /home/lulu/dev/spark/logs/spark-lulu-org.apache.spark.deploy.worker.Worker-1-worker2.out
worker1: starting org.apache.spark.deploy.worker.Worker, logging to /home/lulu/dev/spark/logs/spark-lulu-org.apache.spark.deploy.worker.Worker-1-worker1.out
master: starting org.apache.spark.deploy.worker.Worker, logging to /home/lulu/dev/spark/logs/spark-lulu-org.apache.spark.deploy.worker.Worker-1-master.out

master、worker都已经启动。👌

spark集群检查
  • 8080端口
    在这里插入图片描述
    集群搭建到此为止。
  • 9
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 33
    评论
### 回答1: 很抱歉,我是一名语言模型AI,无法亲自进行实际操作。但是,我可以提供一些基于Docker容器快速搭建Hadoop+Spark+Hive+HBase集群的详细过程记录的参考资料,供您参考。 1. 准备工作 首先,需要安装Docker和Docker Compose。可以参考官方文档进行安装。 2. 下载镜像 可以从Docker Hub上下载HadoopSpark、Hive和HBase的镜像。可以使用以下命令: ``` docker pull bde2020/hadoop-base:2.0.0-hadoop3.2.1-java8 docker pull bde2020/hadoop-namenode:2.0.0-hadoop3.2.1-java8 docker pull bde2020/hadoop-datanode:2.0.0-hadoop3.2.1-java8 docker pull bde2020/hadoop-resourcemanager:2.0.0-hadoop3.2.1-java8 docker pull bde2020/hadoop-nodemanager:2.0.0-hadoop3.2.1-java8 docker pull bde2020/hadoop-historyserver:2.0.0-hadoop3.2.1-java8 docker pull bde2020/hive:2.3.7-postgresql-metastore docker pull bde2020/spark-base:2.4.5-hadoop2.7 docker pull bde2020/spark-master:2.4.5-hadoop2.7 docker pull bde2020/spark-worker:2.4.5-hadoop2.7 docker pull bde2020/hbase:2.2.4-hadoop3.2.1-java8 ``` 3. 编写docker-compose.yml文件 可以编写一个docker-compose.yml文件来定义HadoopSpark、Hive和HBase的容器。以下是一个示例: ``` version: '3' services: namenode: image: bde2020/hadoop-namenode:2.0.0-hadoop3.2.1-java8 container_name: namenode ports: - "9870:9870" volumes: - ./hadoop-data/namenode:/hadoop/dfs/name environment: - CLUSTER_NAME=hadoop-cluster datanode: image: bde2020/hadoop-datanode:2.0.0-hadoop3.2.1-java8 container_name: datanode volumes: - ./hadoop-data/datanode:/hadoop/dfs/data environment: - CLUSTER_NAME=hadoop-cluster - CORE_CONF_fs_defaultFS=hdfs://namenode:8020 resourcemanager: image: bde2020/hadoop-resourcemanager:2.0.0-hadoop3.2.1-java8 container_name: resourcemanager ports: - "8088:8088" environment: - CLUSTER_NAME=hadoop-cluster - CORE_CONF_fs_defaultFS=hdfs://namenode:8020 - YARN_CONF_yarn_resourcemanager_hostname=resourcemanager nodemanager: image: bde2020/hadoop-nodemanager:2.0.0-hadoop3.2.1-java8 container_name: nodemanager environment: - CLUSTER_NAME=hadoop-cluster - CORE_CONF_fs_defaultFS=hdfs://namenode:8020 - YARN_CONF_yarn_resourcemanager_hostname=resourcemanager historyserver: image: bde2020/hadoop-historyserver:2.0.0-hadoop3.2.1-java8 container_name: historyserver ports: - "8188:8188" environment: - CLUSTER_NAME=hadoop-cluster - CORE_CONF_fs_defaultFS=hdfs://namenode:8020 - YARN_CONF_yarn_resourcemanager_hostname=resourcemanager hive-metastore-postgresql: image: bde2020/hive:2.3.7-postgresql-metastore container_name: hive-metastore-postgresql ports: - "5432:5432" environment: - POSTGRES_PASSWORD=hivepassword - POSTGRES_USER=hiveuser - POSTGRES_DB=hivemetastore spark-master: image: bde2020/spark-master:2.4.5-hadoop2.7 container_name: spark-master ports: - "8080:8080" environment: - SPARK_CONF_spark_master_host=spark-master - SPARK_CONF_spark_eventLog_enabled=true - SPARK_CONF_spark_eventLog_dir=/tmp/spark-events - SPARK_CONF_spark_history_fs_logDirectory=hdfs://namenode:8020/spark-logs - SPARK_CONF_spark_history_ui_port=18080 spark-worker-1: image: bde2020/spark-worker:2.4.5-hadoop2.7 container_name: spark-worker-1 environment: - SPARK_CONF_spark_master_url=spark://spark-master:7077 - SPARK_CONF_spark_worker_cores=2 - SPARK_CONF_spark_worker_memory=2g spark-worker-2: image: bde2020/spark-worker:2.4.5-hadoop2.7 container_name: spark-worker-2 environment: - SPARK_CONF_spark_master_url=spark://spark-master:7077 - SPARK_CONF_spark_worker_cores=2 - SPARK_CONF_spark_worker_memory=2g hbase-master: image: bde2020/hbase:2.2.4-hadoop3.2.1-java8 container_name: hbase-master ports: - "16010:16010" environment: - HBASE_CONF_hbase_regionserver_hostname=hbase-master - HBASE_CONF_hbase_master_hostname=hbase-master hbase-regionserver: image: bde2020/hbase:2.2.4-hadoop3.2.1-java8 container_name: hbase-regionserver environment: - HBASE_CONF_hbase_regionserver_hostname=hbase-regionserver - HBASE_CONF_hbase_master_hostname=hbase-master ``` 4. 启动容器 可以使用以下命令启动容器: ``` docker-compose up -d ``` 5. 验证集群 可以使用以下命令验证集群: ``` docker exec -it namenode bash hdfs dfs -mkdir /test hdfs dfs -ls / exit ``` ``` docker exec -it spark-master bash spark-submit --class org.apache.spark.examples.SparkPi --master spark://spark-master:7077 /opt/spark/examples/jars/spark-examples_2.11-2.4.5.jar 10 exit ``` ``` docker exec -it hive-metastore-postgresql bash psql -h localhost -U hiveuser -d hivemetastore \dt \q exit ``` ``` docker exec -it hbase-master bash hbase shell create 'test', 'cf' list exit ``` 以上是一个基于Docker容器快速搭建Hadoop+Spark+Hive+HBase集群的详细过程记录。希望对您有所帮助。 ### 回答2: Docker是一种轻量级的虚拟化技术,可以在同一操作系统中运行多个独立的容器,各个容器之间相互隔离。通过Docker容器,快速搭建HadoopSpark、Hive和Hbase集群成为了可能。下面是基于Docker容器,快速搭建HadoopSpark、Hive和Hbase集群的详细过程记录: 1. 下载Docker技术栈 在运行Docker之前,我们需要先安装Docker和Docker Compose。我们可以从官方Docker网站下载Docker和Docker Compose: - Docker的下载链接:https://www.docker.com/get-started - Docker Compose的下载链接:https://docs.docker.com/compose/install/ 2. 创建docker-compose.yml文件 在运行Docker之前,我们需要创建一个docker-compose.yml文件,该文件定义了Docker容器的配置和组合。我们将以下容器定义在该文件中: - Hadoop NameNode - Hadoop DataNode - Hadoop ResourceManager - Hadoop NodeManager - Spark Master - Spark Worker - Hive Server - HBase Master 我们可以通过以下命令创建docker-compose.yml文件: ``` version: "2.2" services: namenode: container_name: namenode image: cloudera/quickstart:latest hostname: namenode ports: - "8020:8020" - "50070:50070" - "50075:50075" - "50010:50010" - "50020:50020" volumes: - ~/hadoop-data/namenode:/var/lib/hadoop-hdfs/cache/hdfs/dfs/name environment: SERVICE_PRECONDITION: HDFS_NAMENODE datanode: container_name: datanode image: cloudera/quickstart:latest hostname: datanode ports: - "50075:50075" - "50010:50010" - "50020:50020" volumes: - ~/hadoop-data/datanode:/var/lib/hadoop-hdfs/cache/hdfs/dfs/data environment: SERVICE_PRECONDITION: HDFS_DATANODE resourcemanager: container_name: resourcemanager image: cloudera/quickstart:latest hostname: resourcemanager ports: - "8088:8088" - "8030:8030" - "8031:8031" - "8032:8032" - "8033:8033" environment: SERVICE_PRECONDITION: YARN_RESOURCEMANAGER nodemanager: container_name: nodemanager image: cloudera/quickstart:latest hostname: nodemanager environment: SERVICE_PRECONDITION: YARN_NODEMANAGER sparkmaster: container_name: sparkmaster image: sequenceiq/spark:2.1.0 hostname: sparkmaster ports: - "8081:8081" command: bash -c "/usr/local/spark/sbin/start-master.sh && tail -f /dev/null" sparkworker: container_name: sparkworker image: sequenceiq/spark:2.1.0 hostname: sparkworker environment: SPARK_MASTER_HOST: sparkmaster command: bash -c "/usr/local/spark/sbin/start-worker.sh spark://sparkmaster:7077 && tail -f /dev/null" hiveserver: container_name: hiveserver image: bde2020/hive:2.3.4-postgresql-metastore hostname: hiveserver ports: - "10000:10000" environment: METASTORE_HOST: postgres META_PORT: 5432 MYSQL_DATABASE: hive MYSQL_USER: hive MYSQL_PASSWORD: hive POSTGRES_DB: hive POSTGRES_USER: hive POSTGRES_PASSWORD: hive hbasemaster: container_name: hbasemaster image: harisekhon/hbase hostname: hbasemaster ports: - "16010:16010" - "2181:2181" command: ["bin/start-hbase.sh"] ``` 3. 运行Docker容器 运行Docker容器的第一步是将docker-compose.yml文件放置在合适的路径下。在运行Docker容器之前,我们需要从Docker Hub拉取镜像,并运行以下命令: ``` $ docker-compose up -d ``` 该命令会运行所有定义在docker-compose.yml文件中的容器。 4. 配置集群 在运行Docker之后,我们需要进入相应的容器,例如进入namenode容器: ``` $ docker exec -it namenode bash ``` 我们可以使用以下命令检查HadoopSpark、Hive和HBase集群是否正确配置: - Hadoop集群检查: ``` $ hadoop fs -put /usr/lib/hadoop/README.txt / $ hadoop fs -ls / ``` - Spark集群检查: ``` $ spark-shell --master spark://sparkmaster:7077 ``` - Hive集群检查: ``` $ beeline -u jdbc:hive2://localhost:10000 ``` - HBase集群检查: ``` $ hbase shell ``` 5. 关闭Docker容器 在测试完成后,我们可以使用以下命令关闭所有Docker容器: ``` $ docker-compose down --volumes ``` 综上所述,Docker容器是快速搭建HadoopSpark、Hive和HBase集群的理想选择。通过docker-compose.yml文件,我们可以轻松配置和管理整个集群。使用这种方法,可以节省大量的时间和精力,并使整个搭建过程更加方便和高效。 ### 回答3: Docker容器是一种轻型的虚拟化技术,能够快速搭建大型分布式系统集群。可以使用Docker容器快速搭建HadoopSpark,Hive和HBase集群。下面是基于Docker容器搭建大数据集群的详细过程记录: 1.安装Docker和Docker-Compose 首先需要安装Docker和Docker-Compose。可以按照官方文档详细教程进行安装。 2.创建Docker文件 创建一个Dockerfile文件用于构建HadoopSpark,Hive和HBase的镜像。在该文件内添加以下内容: FROM ubuntu:16.04 RUN apt-get update # Install JDK, Python, and other dependencies RUN apt-get install -y openjdk-8-jdk python python-dev libffi-dev libssl-dev libxml2-dev libxslt-dev # Install Hadoop RUN wget http://www.eu.apache.org/dist/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz RUN tar -xzvf hadoop-2.7.7.tar.gz RUN mv hadoop-2.7.7 /opt/hadoop # Install Spark RUN wget http://www.eu.apache.org/dist/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.7.tgz RUN tar -zxvf spark-2.4.0-bin-hadoop2.7.tgz RUN mv spark-2.4.0-bin-hadoop2.7 /opt/spark # Install Hive RUN wget http://www.eu.apache.org/dist/hive/hive-2.3.4/apache-hive-2.3.4-bin.tar.gz RUN tar -zxvf apache-hive-2.3.4-bin.tar.gz RUN mv apache-hive-2.3.4-bin /opt/hive # Install HBase RUN wget http://www.eu.apache.org/dist/hbase/hbase-1.4.9/hbase-1.4.9-bin.tar.gz RUN tar -zxvf hbase-1.4.9-bin.tar.gz RUN mv hbase-1.4.9 /opt/hbase # Set Environment Variables ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64 ENV HADOOP_HOME /opt/hadoop ENV SPARK_HOME /opt/spark ENV HIVE_HOME /opt/hive ENV HBASE_HOME /opt/hbase ENV PATH $PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SPARK_HOME/bin:$HIVE_HOME/bin:$HBASE_HOME/bin # Format HDFS RUN $HADOOP_HOME/bin/hdfs namenode -format 3.创建Docker-Compose文件 创建一个docker-compose文件,里面有一个master节点和两个worker节点。在docker-compose文件中添加以下内容: version: "3" services: master: image: hadoop-spark-hive-hbase container_name: master hostname: master ports: - "22" - "8088:8088" - "8030:8030" - "8031:8031" - "8032:8032" - "9000:9000" - "10020:10020" - "19888:19888" - "50010:50010" - "50020:50020" - "50070:50070" - "50075:50075" volumes: - /data:/data command: - /usr/sbin/sshd - -D worker1: image: hadoop-spark-hive-hbase container_name: worker1 hostname: worker1 ports: - "22" - "50010" - "50020" - "50075" volumes: - /data:/data command: - /usr/sbin/sshd - -D worker2: image: hadoop-spark-hive-hbase container_name: worker2 hostname: worker2 ports: - "22" - "50010" - "50020" - "50075" volumes: - /data:/data command: - /usr/sbin/sshd - -D 4.构建镜像 运行以下命令来构建镜像: docker build -t hadoop-spark-hive-hbase . 5.启动容器 运行以下命令来启动容器: docker-compose up -d 6.测试集群 在浏览器中输入http://IP地址:8088,可以看到Hadoop和YARN的Web控制台。 在浏览器中输入http://IP地址:50070,可以看到HDFS的Web控制台。 在浏览器中输入http://IP地址:8888,可以看到Jupyter Notebook。 在Jupyter Notebook中,创建一个Python文件并运行以下代码来测试Spark集群: from pyspark import SparkContext sc = SparkContext() rdd1 = sc.parallelize(range(1000)) rdd2 = sc.parallelize(range(1000, 2000)) rdd3 = rdd1.union(rdd2) rdd3.take(10) 以上就是基于Docker容器快速搭建HadoopSpark,Hive和HBase集群的详细过程记录。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值