在多台云服务器上的Hadoop和Spark环境配置

1.安装jdk1.8(下载地址):

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
步骤:
1)解压jdk1.8,然后复制到/usr/java/java1.8.0_211
2)输入命令:vi /etc/profile 在文件末尾添加以下内容
JAVA_HOME=/usr/java/java1.8.0_211
PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH
export JAVA_HOME PATH
3)保存,然后输入:source /etc/profile
4)输入 java -version 查看版本

2.安装Scala 2.11环境:

(linux版)https://downloads.lightbend.com/scala/2.11.0/scala-2.11.0.tgz
(windows安装版)https://downloads.lightbend.com/scala/2.11.0/scala-2.11.0.msi
(windows非安装版)https://downloads.lightbend.com/scala/2.11.0/scala-2.11.0.zip
安装步骤:
1)解压:tar -xvzf scala-2.11.0.tgz -C /usr/scala/
2)添加到环境变量里(在/etc/profile里添加一下内容):
export SCALA_HOME=/usr/scala/scala-2.11.0
export PATH= S C A L A H O M E / b i n : {SCALA_HOME}/bin: SCALAHOME/bin:PATH

3)测试:输入scala
4)(退出scala是:q)

3. zookeeper安装

1)下载地址:http://archive.apache.org/dist/zookeeper/zookeeper-3.4.8/
2)三台机器:关闭防火墙,设置静态IP,设置主机名
一定要把防火墙关了,systemctl stop firewalld.service或者service firewalld stop
查看防火墙关了没有:systemctl status firewalld.service或者service firewalld status
vi /etc/hosts
//一定要写内网ip
192.168.xxx.21 node1
192.168. xxx.22 node2
192.168.xxx.23 node2
3)解压:tar -zxvf zookeeper-3.4.8.tar.gz -C /data/hadoop/
4) zookeeper集群配置(三台机器都要配置)
4.1) conf/zoo.cfg文件(有一个名字差不多的文件,就是那个,重命名一下,mv 那个文件的名字 zoo.cfg)
修改 dataDir=/usr/zookeeper
端口号clientPort=2181
最后面增加
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
4.2)/opt/zookeeper目录下创建myid文件,目录不存在就手动创建目录。
(myid文件的路径是dataDir的路径,就是你上面刚刚配的那个,比如这里是放到/usr/zookeeper)
创建myid,内容就只有一个数字,如下:
node1的myid文件内容设置为1
node2的myid文件内容设置为2
node3的myid文件内容设置为3
(分别对应zoo.cfg配置的的server.1、server.2、server.3中的1,2,3)
5) 三台机器分别启动
bin/zkServer.sh start
bin/zkServer.sh status 查看启动是否成功,三台机器会选择一台做为leader,另两台为follower
关闭:zkServer.sh stop
重启:zkServer.sh restart

4.安装hadoop2.7.7分布式集群:

  1. 下载地址
    https://archive.apache.org/dist/hadoop/common/hadoop-2.7.7/

  2. 三台机器
    关闭防火墙,设置静态IP,设置主机名
    vi /etc/hosts
    192.168.xxx.21 node1
    192.168. xxx.22 node2
    192.168.xxx.23 node2
    三台机器一样的配置

  3. 集群部署规划
    节点名称 NN1 NN2 DN RM NM
    node1 NameNode DataNode NodeManager
    node2 SecondaryNameNode DataNode ResourceManager NodeManager
    node3 DataNode NodeManager

  4. 设置SSH免密钥
    每一台机器同样操作
    1)在用户目录下输入命令:ssh-keygen -t rsa 然后全部回车
    2)然后查看.ssh文件夹下的文件:ll ~/.ssh/

3)把每一台机器上的id_rsa.pub都复制到其他机器上(例如node1->node2):
在node1上:scp ~/.ssh/id_rsa.pub node2:~/id_rsa.pub.node1
在node2上:cat id_rsa.pub.node1 >>~/.ssh/authorized_keys
这样就实现了node1到node2的无秘钥登录,
4)测试:在node2上输入命令:ssh node1,如果成功跳转,则说明配置成功
5)同样的步骤,配置所有node之间的无秘钥登录(node1->node2,node2->node1,node1->node3,node3->node1,node2->node3,node3->node2)
还要设置自己登陆的免密
cd ~/.ssh/
cat ./id_rsa.pub >> ./authorized_keys

5.安装hadoop

1)解压:tar -zxvf hadoop-2.7.7.tar.gz -C /data/hadoop/
2)cd /data/hadoop/hadoop-2.7.7/etc/Hadoop
2.1) 修改core-site.xml

<configuration>
<!-- 指定HDFS中NameNode的地址 -->
     <property>
     <name>fs.defaultFS</name>
         <value>hdfs://node1:9000</value>
     </property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
     <property>
     <name>hadoop.tmp.dir</name>
     <value>/data/hadoop/tmp</value>
     </property>
</configuration>

2.2) 修改hadoop-env.sh

修改 export JAVA_HOME=/usr/java/java1.8.0_211

2.3) 修改hdfs-site.xml

<configuration>
<!-- 设置dfs副本数,不设置默认是3个   -->
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
<!-- 设置secondname的端口   -->
    <property>  
               <name>dfs.namenode.secondary.http-address</name>  
               <value>node2:9001</value>  
         </property>  
         <property>  
                 <name>dfs.namenode.name.dir</name>  
                 <value>/data/hadoop/name</value>  
         </property>  
         <property>  
                 <name>dfs.datanode.data.dir</name>  
                 <value>/data/hadoop/data</value>  
         </property>
<property>  
         	<name>dfs.webhdfs.enabled</name>  
         	<value>true</value>  
     	</property>
</configuration>

2.4) 修改slaves

node1
node2
node3
2.5) 修改mapred-env.sh
修改 export JAVA_HOME=/usr/java/java1.8.0_211
2.6) 修改mapred-site.xml
先从模板里复制一份:mv mapred-site.xml.template mapred-site.xml

<configuration>
<!-- 指定mr运行在yarn上 -->
    <property>
     <name>mapreduce.framework.name</name>
     <value>yarn</value>
	</property>
	
	<property>  
          <name>mapreduce.jobhistory.address</name>  
          <value>node1:10020</value>  
   </property> 
    
   <property>  
          <name>mapreduce.jobhistory.webapp.address</name>  
          <value>node1:19888</value>  
   </property>
</configuration>

2.7) 修改yarn-env.sh
修改 export JAVA_HOME=/usr/java/java1.8.0_211
2.8) 修改yarn-site.xml

<configuration>
<!-- reducer获取数据的方式 -->
     <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
     </property>
<!-- 指定YARN的ResourceManager的地址 -->
     <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>node2</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>node2:8032</value>  
       </property>  
       <property>  
               <name>yarn.resourcemanager.scheduler.address</name>  
               <value>node2:8030</value>  
       </property>  
       <property>  
               <name>yarn.resourcemanager.resource-tracker.address</name>  
               <value>node2:8031</value>  
       </property>  
       <property>  
               <name>yarn.resourcemanager.admin.address</name>  
               <value>node2:8033</value>  
       </property>  
       <property>  
               <name>yarn.resourcemanager.webapp.address</name>  
               <value>node2:8088</value>  
       </property>  
</configuration>

2.9) 分发hadoop到节点(注意,应该先去各个主机上创建文件夹:/data/hadoop/)
scp -r hadoop-2.7.7 node2:/data/hadoop/
scp -r hadoop-2.7.7 node3:/data/hadoop/
2.10) 分发hadoop到节点
输入命令:vi /etc/profile
末尾追加:

export  HADOOP_HOME=/data/hadoop/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

退出输入(让配置生效):source /etc/profile

6.启动验证集群

1)启动集群
如果集群是第一次启动,需要格式化namenode,命令:hdfs namenode -format
启动Hdfs:start-dfs.sh
启动Yarn:start-yarn.sh
注意:Namenode和ResourceManger如果不是同一台机器,不能在NameNode上启动 yarn,应该在ResouceManager所在的机器上启动yarn。
2)测试验证
然后输入jps查看进程,如下:
[root@node1 ~]# jps
1440 NameNode
1537 DataNode
1811 NodeManager
1912 Jps
[root@node2 ~]# jps
1730 Jps
1339 ResourceManager
1148 DataNode
1198 SecondaryNameNode
1439 NodeManager
[root@node3 ~]# jps
1362 Jps
1149 DataNode
1262 NodeManager
web页面访问http://node2:50070/dfshealth.html#tab-overview
3)Hadoop启动停止方式
1)各个服务组件逐一启动
分别启动hdfs组件: hadoop-daemon.sh start|stop namenode|datanode|secondarynamenode
启动yarn: yarn-daemon.sh start|stop resourcemanager|nodemanager
2)各个模块分开启动(配置ssh是前提)常用
start|stop-dfs.sh start|stop-yarn.sh
3)全部启动(不建议使用)
start|stop-all.sh
4)查看提交作业的进程:http://node1:8088/cluster

7.安装spark-2.4.4集群:

下载地址:
https://www.apache.org/dyn/closer.lua/spark/spark-2.4.4/spark-2.4.4-bin-hadoop2.7.tgz
解压:tar -zxvf spark-2.4.4-bin-hadoop2.7.tgz -C /data/hadoop/spark/
1)、配置spark-env.sh 文件
先拷贝:cp spark-env.sh.template spark-env.sh
文件增加内容如下:

export JAVA_HOME=/usr/java/java1.8.0_211 #Java环境变量 
export SCALA_HOME=/usr/scala/scala-2.11.0 #SCALA环境变量
export SPARK_WORKING_MEMORY=521m #每一个worker节点上可用的最大内存
export SPARK_MASTER_IP=node1 #驱动器节点IP

(前面改成2是ResourceManager了,这里需要改吗??这是spark的master,前面是hadoop的resourcemanager)
//答:不需要,spark和hadoop不是一个东西
三大分布式计算系统
Hadoop适合处理离线的静态的大数据;
Spark适合处理离线的流式的大数据;
Storm/Flink适合处理在线的实时的大数据。

export HADOOP_HOME=/data/hadoop/hadoop-2.7.7 #Hadoop路径
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop #Hadoop配置目录
export SPARK_DIST_CLASSPATH=$(/data/hadoop/ hadoop-2.7.7/bin/hadoop classpath)
 

2)配置slave主机
先拷贝:cp slaves.template slaves
文件中增加slave节点名称:
node2
node3

3)将spark 目录发送给salve1和slave2
scp -r spark root@node2: /data/hadoop/
(root@可以不写)
scp -r spark root@node3: /data/hadoop/
4)、启动关闭spark
Spark启动前确定Hadoop集群已经启动。
启动spark执行sbin/start-all.sh
关闭spark执行sbin/stop-all.sh

8. Spark使用

用spark-shell命令,就可以直接进入到spark命令行里编写并运行spark程序
将文件上传到hdfs上,就可以用spark直接读取
上传hdfs中命令:
hadoop fs -put demo.txt /user/hadoop/input

Spark读取方法:
val f = sc.textFile(“hdfs://jms-master-01:9000/user/hadoop/input/demo.txt”)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值