Hadoop 安装:
一、集群规划
Hadoop 集群采用主从模式设计
主节点(master):负责分配任务
从节点(slave1,slave2):负责执行任务
1. 检查每个节点的主机名是否正确
hostname
修改主机名编辑 /etc/hostname 后 reboot
二、配置网络
1. 关闭所有节点的防火墙,并禁止开机启动
systemctl stop firewalld
systemctl disable firewalld
2. 编辑所有节点的 /etc/hosts 文件,增加每一个节点的域名
192.168.179.100 master
192.168.179.101 slave1
192.168.179.102 slave2
编辑完以后就可以在需要输入 ip 的地方,通过输入主机名代替
3. 使用 ping 命令检测配置是否正确和网络是否通畅
ping master
ping slave1
ping slave2
三、配置所有节点之间免密登录:
1. 验证是否安装 ssh 和 是否启动 sshd 进程
which ssh
ps -ef | grep sshd
2. 分别在 3 个节点生成公钥和私钥
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
3. 检查是否生成公钥和私钥
ls /root/.ssh/
id_rsa 私钥 id_rsa.pub 公钥
4. 分别在 3 个节点执行命令,把各自的公钥发送给 master 保存
ssh-copy-id master
5. 检查 master 是否收集到了所有人的公钥
cat /root/.ssh/authorized_keys
6. 把 authorized_keys 发送给 slave1 和 slave2
scp /root/.ssh/authorized_keys root@slave1:/root/.ssh
scp /root/.ssh/authorized_keys root@slave2:/root/.ssh
7. 分别在 3 个节点执行命令,验证是否能够互相之间免密登录
ssh master
exit
ssh slave1
exit
ssh slave2
exit
8. 如果上面的任意一步有错,删除 /root/.ssh 文件夹,重新开始
四、在 master 安装 jdk
去官网下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
解压到安装目录
tar -zxvf jdk-8u101-linux-x64.tar.gz -C /usr/local/java/
配置环境变量
vim /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_101
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile
五、在 master 安装 hadoop
1. 把 hadoop 安装包上传到 master 并解压
tar -xvf hadoop-2.7.6.tar.gz
2. 把解压内容移动到 /usr/local/hadoop 文件夹内
mv hadoop-2.7.6 /usr/local/hadoop
移动前要保证 hadoop 文件夹不存在
绝对不要自己创建 hadoop 文件夹,
否则会把 hadoop-2.7.6 放入 hadoop 文件夹
3. 配置 hadoop 的环境变量,允许我们在任意目录使用 hadoop 相关的命令
vi /etc/profile
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
4. 验证安装是否成功
hadoop version
六、配置 master 的 hadoop
所有的配置文件都存放在安装目录下的 etc/hadoop 文件夹内
总共需要修改 7 个配置文件
1. slaves 保存所有从节点的 ip
一行写一个从节点的主机名
2. hadoop-env.sh 配置 hadoop 的运行环境
编辑第 25 行的 JAVA_HOME
3. yarn-env.sh 配置 yarn 的运行环境
解注释第 23 行,并修改 JAVA_HOME
4.编辑 core-site.xml 文件
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/hdfs</value>
</property>
</configuration>
5.编辑 hdfs-site.xml 文件
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hdfs://master:50090</value>
</property>
</configuration>
6.编辑 yarn-site.xml 文件
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
7.重命名 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>
七.把 master 安装好的文件复制给 slave
八.格式化Hadoop
在 master 上执行 hdfs namenode -format 格式化主节点。如果成功会看到 successfully formatted.
重新格式化最好先删除master上hadoop安装目录下的hdfs文件夹
浏览器输入 http://master-ip:50070 查看 hdfs 管理页面。
http://master-ip:8088 查看 yarn 管理页面
使用 stop-dfs.sh 关闭 hdfs 功能。
使用 stop-yarn.sh 关闭 yarn 功能。
HA配置(需要先安装zookeeper):
1)vi hadoop-env.sh
配置JDK安装路径:
JAVA_HOME=/usr/local/jdk
2)vi core-site.xml
<configuration>
<!-- hdfs地址,ha模式中是连接到nameservice -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<!-- 这里的路径默认是NameNode、DataNode、JournalNode等存放数据的公共目录,也可以单独指定 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/hdfs</value>
</property>
<!-- 指定ZooKeeper集群的地址和端口。注意,数量一定是奇数,且不少于三个节点-->
<property>
<name>ha.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
</configuration>
3)vi hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hdfs://master:50090</value>
</property>
<!-- 为namenode集群定义一个services name -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- nameservice 包含哪些namenode -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>master,slave1</value>
</property>
<!-- 名为master的namenode的rpc地址和端口号,rpc用来和datanode通讯 -->
<property>
<name>dfs.namenode.rpc-address.ns1.master</name>
<value>master:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.master</name>
<value>master:50070</value>
</property>
<!-- 名为slave1的namenode的rpc地址和端口号,rpc用来和datanode通讯 -->
<property>
<name>dfs.namenode.rpc-address.ns1.slave1</name>
<value>slave1:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.slave1</name>
<value>slave1:50070</value>
</property>
<!-- namenode间用于共享编辑日志的journal节点列表 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://master:8485;slave1:8485;slave2:8485/ns1</value>
</property>
<!-- 指定该集群出现故障时,是否自动切换到另一台namenode -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- journalnode 上用于存放edits日志的目录,位置可随意设置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/usr/local/hadoop/hdfs/journalnode</value>
</property>
<!-- 客户端连接可用状态的NameNode所用的代理类 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 一旦需要NameNode切换,使用ssh方式进行操作 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<!-- 如果使用ssh进行故障切换,使用ssh通信时用的密钥存储的位置 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!-- connect-timeout超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>
4)vi 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>
5)vi yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 启用HA高可用性 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定resourcemanager的名字 -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yarn</value>
</property>
<!-- 使用了2个resourcemanager,分别指定Resourcemanager的地址 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 指定rm1的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>master</value>
</property>
<!-- 指定rm2的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>slave1</value>
</property>
<!-- 指定当前机器master作为rm1 -->
<property>
<name>yarn.resourcemanager.ha.id</name>
<value>rm1</value>
</property>
<!-- 指定zookeeper集群机器 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
<!--以下为解决spark-shell 以yarn client模式运行报错问题而增加的配置,估计spark-summit也会有这个问题。
2个配置只用配置一个即可解决问题,当然都配置也没问题-->
<!--虚拟内存设置是否生效,若实际虚拟内存大于设置值 ,spark 以client模式运行可能会报错,
"Yarn application has already ended! It might have been killed or unable to l"-->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>4</value>
</property>
</configuration>
6)vi slaves
slave1
slave2
拷贝hadoop到其他机器
1)拷贝
scp -r /usr/local/hadoop root@slave1:/use/local/hadoop/
scp -r /use/local/hadoop root@slave2:/usr/local/hadoop/
2)修改yarn-site.xml
在slave1机器,即ResourceManager备用主节点上修改如下属性,表示当前机器作为rm2::
<property>
<name>yarn.resourcemanager.ha.id</name>
<value>rm2</value>
</property>
同时删除slave2机器上的该属性对,因为slave2机器并不作为ResourceManager。
1. 三个节点都启动 zookeeper
zkServer.sh start
2. 三个节点都启动 journalnode
hadoop-daemon.sh start journalnode
3. 格式化集群
hdfs namenode -format
4. 格式化 zookeeper
hdfs zkfc -formatZK
5. 在 master 和 slave1 安装 psmisc 软件
yum -y install psmisc
6. 单独启动 master 的 namenode
hadoop-daemon.sh start namenode
7. 同步 master 的 namenode 中的元数据到 slave1
在 slave1 执行:hdfs namenode -bootstrapStandby
8. 关闭 master 的 namenode
hadoop-daemon.sh stop namenode
9. 启动集群
start-dfs.sh
jdk安装:
1.访问 jdk 官方下载地址,选择 tar.gz 版本。
2.把下载好的 jdk 上传到 /root 文件夹。
3.使用 tar -xvf jdk-8u141-linux-x64.tar.gz 命令解压 jdk 到当前目录。
4.使用 mv jdk1.8.0_141/ /usr/local/jdk 命令,移动解压后的文件到 /usr/local/jdk 目录中。
配置:
1.使用 vi /etc/profile 命令,编辑环境变量文件,并进入一般模式。
2.按 i 键进入编辑模式。
3.添加以下环境变量到文件最后。
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=/usr/local/jdk/jre
export CLASSPATH=.:$JRE_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
4.使用 source /etc/profile 刷新环境变量配置文件,使其生效。
5.验证安装是否成功
mysql安装:
1.下载 MySQL 的 yum 源。
2.上传下载的 rpm 文件到 root 文件夹。
3.使用 rpm -ivh mysql-community-release-el7-1.noarch.rpm 命令安装源文件。
4.使用 yum -y install mysql-server 命令安装 MySQL。
5.使用 systemctl start mysqld 命令启动 MySQL 服务。
6.使用 systemctl enable mysqld 命令配置开机启动 MySQL 服务。
7.执行 grep 'password' /var/log/mysqld.log 命令查看默认密码。
8.使用 mysql -u root -p 登录 MySQL。
9.使用 alter user 'root'@'localhost' identified by '密码'; 修改默认密码。
10.使用 use mysql; 和 update user set host='%' where user='root'; 语句开启远程访问。
11.使用 flush privileges; 语句使权限修改立即生效。
12.上传 db.sql 脚本文件到 /root 文件夹,并使用 source /root/db.sql 语句创建数据库。
使用 systemctl stop firewalld 命令关闭防火墙。
使用 systemctl disable firewalld 命令禁止防火墙开机启动。
nginx安装:
1.在/etc/yum.repos.d/目录下创建nginx.repo文件
编辑内容:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
2.使用 yum -y install nginx 安装。
systemctl start nginx 启动 nginx。
systemctl stop nginx 停止 nginx。
systemctl restart nginx 重启 nginx。
配置
nginx 的配置文件放在 /etc/nginx 目录下,修改了 nginx 的任意配置项都要重启 nginx 才能生效。
需要关注的文件有两个:nginx.conf 和 conf.d 两个。
nginx.conf 是 nginx 的配置文件。conf.d 文件夹中放的是我们自定义的项目配置文件。
修改 nginx.conf 的第一行为:user root;。让我们以 root 用户身份启动 nginx。
redis安装:
1. 下载并上传到 root
2. 解压到当前文件夹
3. 进入解压后的目录
4. 安装 c++ 编译器
yum -y install gcc-c++
yum -y install tcl
5. 使用 make 命令编译源代码
6. 使用 make test 测试是否缺少依赖缺什么使用 yum 安装什么
7. 使用 make PREFIX=/usr/local/redis install 安装
8. 为了统一管理 redis,把 redis.conf 拷贝到 /usr/local/redis 文件夹
9. 进入 /usr/local/redis 目录,并编辑 redis.conf 文件
10. 使用 # 注释 bind 127.0.0.1 这一行,开启远程访问
11. 进入 bin 目录使用 ./redis-server 命令启动 redis 服务器
12. 在新的窗口中进入 bin 目录使用 ./redis-cli 命令启动 redis 客户端
13. 使用 config set requirepass 123456 为 redis 设置密码为 123456
flume安装:
1. 上传、解压和移动到 /usr/local/flume
2. 配置环境变量
export FLUME_HOME=/usr/local/flume
export PATH=$PATH:$FLUME_HOME/bin
3. 验证是否安装成功
flume-ng version
使用:
1. 创建并编辑 flume-conf.properties 文件
2. flume-ng agent -n a1 -c conf -f /usr/local/flume/conf/flume-conf.properties
hive安装:
准备:
0. 安装 notepad++ 编辑配置文件
插件 --> NppFTP --> Settings --> add new --> close --> connect
链接 master 以后就可以下载 master 的文件到 windons 进行编辑
保存后会自动上传到 master 替换原有的文件
1. 安装好 hadoop 和 mysql
2. 配置 hadoop 的代理用户
编辑 core-site.xml 增加以下内容
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
使用 scp 命令发送到 slave1 和 slave2 覆盖原来的 core-site.xml 文件
安装:
1. 下载、上传、解压和移动到 /usr/local/hive 文件夹
2. 进入 /usr/local/hive/conf 目录,把 hive-default.xml.template 改名为
3. 编辑 hive-site.xml
增加:
<property>
<name>system:java.io.tmpdir</name>
<value>/usr/local/hive/tmp</value>
</property>
<property>
<name>system:user.name</name>
<value>root</value>
</property>
修改 metastore 信息:
ConnectionDriverName
com.mysql.jdbc.Driver
ConnectionURL
jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&useSSL=false&allowPublicKeyRetrieval=true
ConnectionUserName
数据库登录名称
ConnectionPassword
数据库登录密码
4. 进入 /usr/local/hive/conf/
4.1 mv 修改 hive-env.sh.template 为 hive-env.sh
4.2 vi 编辑 hive-env.sh 文件
使用:set number 命令,显示文本行号
修改48行 HADOOP_HOME=/usr/local/hadoop
5. 登录 mysql 检查是否有 hive 数据库,如果有删除
6. 配置环境变量
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
7. 拷贝 mysql 的驱动到 /usr/local/hive/lib 文件夹
8. 初始化 MetaStore
schematool -dbType mysql -initSchema
使用:
HDFS 和 YARN 要先启动
hiveserver2 启动服务器
1. 查看日志确定是否启动成功:
cat /tmp/root/hive.log
Started HttpServer[hiveserver2] on port 10002
2. 查看端口确定是否启动成功:
netstat -anp | grep 10000
启动客户端并以 root 身份登录 Hive:
beeline -u jdbc:hive2://master:10000 -n root -p
使用 ctrl + c 关闭服务器和客户端
sqoop安装:
1. 上传、解压和移动 /usr/local/sqoop
2. 进入 sqoop 的 conf 文件夹
3. 重命名 sqoop-env-template.sh 为 sqoop-env.sh
4. 编辑 sqoop-env.sh,解注释并设置以下内容
export HADOOP_COMMON_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=/usr/local/hadoop
export HIVE_HOME=/usr/local/hive
5. 复制 mysql 驱动到 sqoop 的 lib 文件夹中
6. 配置环境变量
export SQOOP_HOME=/usr/local/sqoop
export PATH=$PATH:$SQOOP_HOME/bin
7. sqoop version
zookeeper安装:
1. 上传、解压和移动 下载地址:http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz
2. 进入 conf 目录,重命名 zoo_sample.cfg 为 zoo.cfg
3. 编辑 zoo.cfg
修改 dataDir=/usr/local/zookeeper/data
增加 server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
4. 在 zookeeper 目录下创建 data 文件夹
在 data 文件夹内创建 myid 文件
myid 内容为 1
5. 配置环境变量
6. 发送 zookeeper 和环境变量到 slave1 和 slave2
7. 修改 slave1 和 slave2 的 myid 为 2 和 3
8. 分别在使用 zkServer.sh start 启动 zookeeper
9. zookeeper 的日志在启动命令的目录下,叫做 zookeeper.out
hbase安装:
下载安装
下载解压Hbase安装包,解压并移到/usr/local/hbase
配置
在hhbase-env.sh中指定JDK
export JAVA_HOME=/usr/local/jdk
在hbase-site.xml中添加
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
打开regionservers,修改为
master
slave1
slave2
配置环境变量
#HBase
export HBASE_HOME=/usr/local/hbase
export PATH=$PATH:$HBASE_HOME/bin
更新环境变量
source /etc/profile
将/usr/local/hbase和/etc/profile分发到各个节点
scp -r /usr/local/hbase root@slaveXX:/usr/local
scp -r /etc/profile root@slaveXX:/etc
注意:将XX替换成数字
启动
如果HDFS没有启动,先启动HDFS
然后在master上运行 start-hbase.sh
验证进程
执行jps命令后应该能够看到以下进程
Hmaster
HRegionServer
HQuorumPeer
HBase监测网站
master:16010
HA配置
进入hbase-1.3.1/conf/目录,修改配置文件:
cd hbase-1.3.1/conf/
1)vi hbase-env.sh
//配置JDK
export JAVA_HOME=/usr/local/jdk
//保存pid文件
export HBASE_PID_DIR=/usr/local/hbase/pid
//修改HBASE_MANAGES_ZK,禁用HBase自带的Zookeeper,因为我们是使用独立的Zookeeper
export HBASE_MANAGES_ZK=false
2)vi hbase-site.xml
<configuration>
<!-- 设置HRegionServers共享目录,请加上端口号 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<!-- 指定HMaster主机 -->
<property>
<name>hbase.master</name>
<value>hdfs://master:60000</value>
</property>
<!-- 启用分布式模式 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定Zookeeper集群位置 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
<!-- 指定独立Zookeeper安装路径 -->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/zookeeper</value>
</property>
<!-- 指定ZooKeeper集群端口 -->
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
</configuration>
3)vi regionservers
修改regionservers文件,因为当前是使用独立的Zookeeper集群,所以要指定RegionServers所在机器:
master
slave1
slave2
4)创建pid文件保存目录
在/usr/local/hbase目录下:
mkdir pid
3、拷贝HBase到其他机器
scp -r /usr/local/hbase root@slave1:/usr/local/
scp -r /usr/local/hbase root@slave2:/usr/local/
spark安装:
1. 下载、上传、解压和移动
2. 进入 conf 文件夹进行配置
3. 重命名 mv spark-env.sh.template spark-env.sh
4. 编辑 spark-env.sh 增加
export JAVA_HOME=/usr/local/jdk
export SPARK_MASTER_HOST=master
export SPARK_MASTER_PORT=7077
5. 重命名 mv slaves.template slaves
6. 编辑 slaves 文件
删除自带的 localhost
增加 slave1
slave2
7. 发送 spark 文件夹到 slave1 和 slave2
8. /usr/local/spark/sbin/start-all.sh 启动 spark
不能把 spark 加入环境变量,
spark 中的一些脚本名字和 hadoop 中的同名
9. jps 查看
master:Master
slave:Worker
10. web 检测页面:http://master:8080/
配置 HA
1. 停止集群 /usr/local/spark/sbin/stop-all.sh
2. 编辑 conf/spark-env.sh
注释 SPARK_MASTER_HOST
增加 export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=master:2181,slave1:2181,slave2:2181
-Dspark.deploy.zookeeper.dir=/usr/local/spark"
3. 把修改的 spark-env.sh 发送给 slave1 和 slave2
4. 在每个节点启动 zookeeper
5. 在 master 启动 spark
6. 在 slave 手动启动 master
/usr/local/spark/sbin/start-master.sh
执行 wordcount
1. 启动 spark shell 的本地模式
/usr/local/spark/bin/spark-shell --master local[1]
在本地执行 spark 程序,没有去集群执行
local 分配的线程数
2. 执行 word count:
sc.textFile("file:///root/aaa.txt").flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).collect
整合 HDFS
1. 关闭 spark 集群
2. 编辑 conf/spark-env.sh
增加 export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
3. 发送给 slave1 和 slave2
4. 启动 HDFS 和 spark 集群
5. 进入 spark-shell 的 Standalone 模式
该模式是使用 spark 集群(Master 和 Worker)进行资源分配和任务调度
/usr/local/spark/bin/spark-shell \
--master spark://master:7077 \
--executor-memory 1g \
--total-executor-cores 1
指定 spark 集群地址,能够使用的内存为 1g,能够使用的 cpu 核心数为 1
6. sc.textFile("/ip-action.dat").flatMap(_.split("\t")).map((_, 1)).reduceByKey(_+_).collect.foreach{println}
输出所有的计算结果
7. sc.textFile("/ip-action.dat").flatMap(_.split("\t")).map((_, 1)).reduceByKey(_+_).saveAsTextFile("/wc")
保存计算结果到 hdfs
整合 Yarn
1. 关闭 spark 集群
2. 编辑 conf/spark-env.sh
增加 export YARN_CONF_DIR=/usr/local/hadoop/etc/hadoop
3. 发送给 slave1 和 slave2
4. 编辑 vi /usr/local/hadoop/etc/hadoop/yarn-site.xml
增加 <property>
<name>yarn.nodemanager.vmem-check-enable</name>
<value>false</value>
</property>
发送给 slave1 和 slave2
5. 启动 YARN,不需要启动 spark 集群
6. 进入 spark-shell 的 yarn 模式
该模式不依赖 spark 集群,由 yarn 分配资源和进行任务调度
/usr/local/spark/bin/spark-shell --master yarn --deploy-mode client
kafka安装:
1.下载、上传、解压和移动到 /usr/local/kafka
2.进入 /usr/local/kafka/config 目录
编辑 vi server.properties
master节点 borber.id =0
3. zookeeper.connect=master:2181,slave1:2181,slave2:2181
4. 配置环境变量,更新
5.发送 kafka 文件,到 slave1,slave2
6. 编辑 slave1和slave2 的/usr/local/kafka/config/server.properties
slave1节点 borber.id =1
slave2节点 borber.id =2