Hadoop2.7.6+Spark2.1.0分布式集群环境搭建

Hadoop2.7.6+Spark2.1.0分布式集群环境搭建

参考博文链接:https://www.cnblogs.com/purstar/p/6293605.html
http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html

一、 修改host文件

1、在主节点,就是第一台主机的命令行下;

vim /etc/hosts
#假设是三台主机在原文件的基础上加上;
ip1 master worker0 namenode
ip2 worker1 datanode1
ip3 worker2 datanode2
#其中的ipN代表一个可用的集群IP,ip1为master的主节点,ip2和iip3为从节点。

2、统一hosts文件,让几个主机能通过host名字来识别彼此

scp /etc/hosts root@workerN:/etc/hosts

二、 ssh互信(免密码登陆)

注意我这里配置的是root用户,所以以下的家目录是/root
如果你配置的是用户是xxxx,那么家目录应该是/home/xxxxx/

1、主机生成公钥 ssh-keygen -t rsa -P '' 一路回车

2、将公钥从主机节点追加到从机 .ssh/authorized_keys 中

ssh-copy-id -i ~/.ssh/id_rsa.pub root@workerN

意味着执行时的用户能够通过秘钥登陆到workerN的root用户上(也可以将root换车其他用户),所以主机到一台从机可以有多种组合(普通用户到从机root用户,普通用户到从机普通用户,root用户到从机普通用户,root用户到从机root用户,都需要一一设置)

3、从主机节点拷贝id-rsa.pub到从机worker1

scp /root/.ssh/id_rsa.pub root@worker1:/root/.ssh/id_rsa.pub.master

4、在主机和从机上执行如下命令

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
cat /root/.ssh/id_rsa.pub.master >>/root/.ssh/authorized_keys

附注:2和3、4的效果是一样的,都是追加到对应认证秘钥中

5、修改相关文件及文件夹权限(如果使用的都是root用户,则对root相关文件夹和文件添加权限)

   chmod g-w /home/your_user # 或 chmod 755 /home/your_user
   chmod 700 /home/your_user/.ssh
   chmod 600 /home/your_user/.ssh/authorized_keys

测试配置是否可以访问本身

# 登录到自己主机
ssh localhost

6、然后修改/etc/ssh/sshd_config,禁止密码登陆,允许RSA和公钥登陆。重启ssh服务

附注:由于搭建分布式可能会出现主机通过秘钥访问主机,所以还需要执行
ssh-copy-id -i ~/.ssh/id_rsa.pub root@master

三、安装基础环境(JAVA和SCALA环境)

1.Java1.8环境搭建:


配置master的java环境

#下载jdk1.8的rpm包
#去官网下载,框内的其实都能用来安装
rpm -ivh jdk-8u112-linux-x64.rpm 
#增加JAVA_HOME
vim etc/profile
#增加如下行:
#Java HOME
export JAVA_HOME=/usr/java/jdk1.8.0_112/
#刷新配置:
source /etc/profile #当然reboot也是可以的
配置workerN主机的java环境
#使用scp命令进行拷贝
scp jdk-8u112-linux-x64.rpm root@workerN:/root
#其他的步骤如master节点配置一样

2.Scala2.12.2环境搭建:

Master节点:

#下载scala 2.12.2安装包:
可以去官网下,也可以去国内镜像源下载比如阿里云的
#安装rpm包(如果缺少依赖,用alien -i安装):
rpm -ivh scala-2.12.2.rpm
#增加SCALA_HOME
vim /etc/profile
#增加如下内容;
#Scala Home
export SCALA_HOME=/usr/share/scala
#刷新配置
source /etc/profile
WorkerN节点;
#使用scp命令进行拷贝
scp scala-2.12.2.rpm root@workerN:/root
#其他的步骤如master节点配置一样

四、Hadoop2.7.6完全分布式搭建

MASTER节点:

1.下载二进制包:

去官网下载,或者去镜像源网站下载

2.解压并移动至相应目录

我的习惯是将软件放置/opt目录下:

tar -zxvf hadoop-2.7.3.tar.gz -C /opt

3.修改相应的配置文件:

(1)/etc/profile:
增加如下内容:

#hadoop enviroment 
export HADOOP_HOME=/opt/hadoop-2.7.3/
export PATH="$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH"
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

(2)$HADOOP_HOME/etc/hadoop/hadoop-env.sh
修改JAVA_HOME为显式路径 如下:

export JAVA_HOME=/usr/java/jdk1.8.0_112/

(3)$HADOOP_HOME/etc/hadoop/slaves
worker1
worker2

(4)$HADOOP_HOME/etc/hadoop/core-site.xml

<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>/opt/hadoop-2.7.6/tmp</value>
        </property>
</configuration>

(5)$HADOOP_HOME/etc/hadoop/hdfs-site.xml

<configuration>
    <property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>master:50090</value>
    </property>
    <property>
      <name>dfs.replication</name>
      <value>2</value>
    </property>
    <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:/opt/hadoop-2.7.6/hdfs/name</value>
    </property>
    <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:/opt/hadoop-2.7.6/hdfs/data</value>
    </property>
</configuration>

(6)$HADOOP_HOME/etc/hadoop/mapred-site.xml
复制template,生成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.address</name>
          <value>master:19888</value>
  </property>
</configuration>

(7)$HADOOP_HOME/etc/hadoop/yarn-site.xml

    <!-- Site specific YARN configuration properties -->
     <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</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:8031</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>

至此master节点的hadoop搭建完毕
再启动之前我们需要
格式化一下namenode

hadoop namenode –format

注意:不要重复format,否则会造成后续datanode无法启动

WorkerN节点:
(1)复制master节点的hadoop文件夹到worker上:

scp -r /opt/hadoop-2.7.6 root@wokerN:/opt 
#注意这里的N要改为1或者2

(2)修改/etc/profile:
 过程如master一样

五、Spark2.1.0完全分布式环境搭建:

MASTER节点:

1.下载文件:

去官网或者镜像源网站下载
spark-2.1.2-bin-hadoop2.7.tgz

2.解压并移动至相应的文件夹;

tar -xzvf spark-2.1.2-bin-hadoop2.7.tgz –C /opt/

3.修改相应的配置文件:

(1)/etc/profie

#Spark enviroment
export SPARK_HOME=/opt/spark-2.1.2-bin-hadoop2.7/
export PATH="$SPARK_HOME/bin:$PATH"

(2)$SPARK_HOME/conf/spark-env.sh

cp spark-env.sh.template spark-env.sh
#配置内容如下:
export SCALA_HOME=/usr/share/scala
export JAVA_HOME=/usr/java/jdk1.8.0_112/
export SPARK_MASTER_IP=master
export SPARK_WORKER_MEMORY=1g
export HADOOP_CONF_DIR=/opt/hadoop-2.7.6/etc/hadoop

(3)$SPARK_HOME/conf/slaves

cp slaves.template slaves
#配置内容如下
master
worker1
worker2
WorkerN节点:
#将配置好的spark文件复制到workerN节点
scp spark-2.1.2-bin-hadoop2.7 root@workerN:/opt
#修改/etc/profile,增加spark相关的配置,如MASTER节点一样

六、启动集群的脚本
启动集群脚本start-cluster.sh如下:

#!/bin/bash
echo -e "\033[31m ========Start The Cluster======== \033[0m"
echo -e "\033[31m Starting Hadoop Now !!! \033[0m"
/opt/hadoop-2.7.6/sbin/start-all.sh
echo -e "\033[31m Starting Spark Now !!! \033[0m"
/opt/spark-2.1.2-bin-hadoop2.7/sbin/start-all.sh
echo -e "\033[31m The Result Of The Command \"jps\" :  \033[0m"
jps
echo -e "\033[31m ========END======== \033[0m"

截图如下:

关闭集群脚本stop-cluser.sh如下:

#!/bin/bash
echo -e "\033[31m ===== Stoping The Cluster ====== \033[0m"
echo -e "\033[31m Stoping Spark Now !!! \033[0m"
/opt/spark-2.1.0-bin-hadoop2.7/sbin/stop-all.sh
echo -e "\033[31m Stopting Hadoop Now !!! \033[0m"
/opt/hadoop-2.7.3/sbin/stop-all.sh
echo -e "\033[31m The Result Of The Command \"jps\" :  \033[0m"
jps
echo -e "\033[31m ======END======== \033[0m"

截图如下:

七、测试集群:

这里我都用最简单最常用的Wordcount来测试好了!

1.测试hadoop

测试的源文件的内容为:
Hello hadoop
hello spark
hello bigdata
然后执行下列命令:

hadoop fs -mkdir -p /Hadoop/Input
#这里创建的是hadoop文件系统的虚拟路径,可以随意,后续一致就行
hadoop fs -put wordcount.txt /Hadoop/Input
hadoop jar /opt/hadoop-2.7.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount /Hadoop/Input /Hadoop/Output

#等待mapreduce执行完毕后,查看结果;
hadoop fs -cat /Hadoop/Output/*


hadoop集群搭建成功!

2.测试spark

为了避免麻烦这里我们使用spark-shell,做一个简单的worcount的测试
用于在测试hadoop的时候我们已经在hdfs上存储了测试的源文件,下面就是直接拿来用就好了!

spark-shell
val file=sc.textFile("hdfs://master:9000/Hadoop/Input/wordcount.txt")
val rdd = file.flatMap(line => line.split(" ")).map(word => (word,1)).reduceByKey(_+_)
rdd.collect()
rdd.foreach(println)



退出的话使用如下命令:
:quit

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值