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分布式集群:
-
下载地址
https://archive.apache.org/dist/hadoop/common/hadoop-2.7.7/ -
三台机器
关闭防火墙,设置静态IP,设置主机名
vi /etc/hosts
192.168.xxx.21 node1
192.168. xxx.22 node2
192.168.xxx.23 node2
三台机器一样的配置 -
集群部署规划
节点名称 NN1 NN2 DN RM NM
node1 NameNode DataNode NodeManager
node2 SecondaryNameNode DataNode ResourceManager NodeManager
node3 DataNode NodeManager -
设置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”)