大数据Hadoop-Spark集群部署知识总结
一、启动/关闭 hadoop
myhadoop.sh start/stop
分步启动:
第一步:在hadoop102主机上 sbin/start-dfs.sh
第二步:在hadoop103主机上 sbin/start-yarn.sh
分步关闭:
第一步:在hadoop103主机上 sbin/stop-yarn.sh
第二步:在hadoop102主机上 sbin/stop-dfs.sh
myhadoop.sh脚本文件内容
#!/bin/bash
if [ $# -lt 1 ]
then
echo "No Args Input..."
exit ;
fi
case $1 in
"start")
echo " =================== 启动 hadoop集群 ==================="
echo " --------------- 启动 hdfs ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
echo " --------------- 启动 yarn ---------------"
ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
echo " --------------- 启动 historyserver ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
echo " =================== 关闭 hadoop集群 ==================="
echo " --------------- 关闭 historyserver ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
echo " --------------- 关闭 yarn ---------------"
ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
echo " --------------- 关闭 hdfs ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
echo "Input Args Error..."
;;
esac
二、启动/关闭 zookeeper
myzk.sh start/stop
分步启动/关闭:
bin/zkServer.sh start
bin/zkServer.sh stop
myzk.sh脚本文件内容
for host in hadoop102 hadoop103 hadoop104
do
case $1 in
"start")
ssh $host "source /etc/profile;/opt/module/zookeeper-3.5.7/bin/zkServer.sh $1"
echo "$host zk is running..."
echo "-----------------------------"
;;
"stop")
ssh $host "source /etc/profile;/opt/module/zookeeper-3.5.7/bin/zkServer.sh $1"
echo "$host zk is stopping..."
echo "-----------------------------"
;;
*)
echo '输入有误!'
;;
esac
done
三、启动Hbase
bin/hbase-daemon.sh start master
bin/hbase-daemon.sh start regionserver
bin/hbase-daemon.sh stop master
bin/hbase-daemon.sh stop regionserver
bin/start-hbase.sh
bin/stop-hbase.sh
四、常见端口号总结
50070:HDFSwebUI的端口号
8485:journalnode默认的端口号
9000:非高可用访问数rpc端口
8020:高可用访问数据rpc
8088:yarn的webUI的端口号
8080:master的webUI,Tomcat的端口号
7077:spark基于standalone的提交任务的端口号
8081:worker的webUI的端口号
18080:historyServer的webUI的端口号
4040:application的webUI的端口号
2181:zookeeper的rpc端口号
9083:hive的metastore的端口号
60010:Hbase的webUI的端口号
6379:Redis的端口号
8087:sparkwebUI的端口号 sbin/start-master.sh 文件可以修改端口号,默认是8080,我改为8081
9092:kafka broker的端口
五、启动Hive
- 启动metastore hive --service metastore
- 启动hiveserver2 bin/hive --service hiveserver2
- 启动hive (/opt/module/hive):bin/hive
hive建表:
create table test1
(InvoiceNo String, StockCode String, Description String, Quantity String, InvoiceDate String, UnitPrice String, CustomerID String, Country String)
ROW format delimited fields terminated by ',' STORED AS TEXTFILE;
导入数据:
load data local inpath '/opt/module/data/test.csv' into table test1;
sqoop导出到mysql:
bin/sqoop export \
--connect jdbc:mysql://hadoop102:3306/company \
--username root \
--password 000429 \
--table sale \
--num-mappers 1 \
--export-dir /user/hive/warehouse/sale \
--input-fields-terminated-by ","
sqoop导入到hive:
bin/sqoop import \
> --connect jdbc:mysql://hadoop102:3306/company \
> --username root \
> --password 123456 \
> --table staff \
> --num-mappers 1 \
> --hive-impo
> --fields-terminated-by "\t" \
> --hive-overwrite \
> --hive-table 数据库名.staff_hive
sql建表:
USE `company`;
CREATE TABLE `sale1` (
`day_id` VARCHAR(50) COLLATE utf8_bin DEFAULT NULL,
`sale_nbr` VARCHAR(50) COLLATE utf8_bin DEFAULT NULL,
`cnt` VARCHAR(50) COLLATE utf8_bin DEFAULT NULL,
`round` VARCHAR(50) COLLATE utf8_bin DEFAULT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
CREATE TABLE `sale2` (
`day_id` varchar(50) COLLATE utf8_bin DEFAULT NULL,
`sale_nbr` varchar(50) COLLATE utf8_bin DEFAULT NULL,
`cnt` varchar(50) COLLATE utf8_bin DEFAULT NULL,
`round` varchar(50) COLLATE utf8_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
六、Spark
- 安装Spark后配置 classpath
$ cd /usr/local/spark
$ cp ./conf/spark-env.sh.template ./conf/spark-env.sh #拷贝配置文件
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath) 这个路径是hadoop的安装路径
- local模式启动spark: ./bin/spark-shell
-
安装sbt
vim ./sbt
启动脚本文件内容如下:
#!/bin/bash SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M" java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
增加可执行权限命令: chmod u+x ./sbt
-
simple.sbt文件内容(注意版本号和名字)
name := "Simple Project"
version := "1.0"
scalaVersion := "2.11.8"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.0"
七、配置Spark集群
- 主机环境变量
vim ~/.bashrc
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
$ source ~/.bashrc
- 从机环境变量
$ cd /usr/local/spark/
$ cp ./conf/slaves.template ./conf/slaves
把默认内容localhost替换成如下内容:
hadoop103
hadoop104
- 配置spark-env.sh
- 注意SPARK_MASTER_IP 要填自己的主机IP地址
- SPARK_DIST_CLASSPATH和HADOOP_CONF_DIR 都是主机的hadoop路径
$ cp ./conf/spark-env.sh.template ./conf/spark-env.sh
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export SPARK_MASTER_IP=192.168.1.104
- 分发到从机(待分发的路径最好已经建立好且是空的)
cd /usr/local/
tar -zcf ~/spark.master.tar.gz ./spark
cd ~
scp ./spark.master.tar.gz hadoop103:/home/hadoop
scp ./spark.master.tar.gz hadoop104:/home/hadoop
在从机上进行如下操作:
sudo rm -rf /usr/local/spark/
sudo tar -zxf spark.master.tar.gz -C /usr/local
sudo chown -R 用户名 /usr/local/spark
八、测试运行
- 首先启动hadoop集群
- 启动spark的主机节点
$ cd /usr/local/spark/
$ sbin/start-master.sh
- 启动spark的从机节点
$ sbin/start-slaves.sh
打开浏览器输入 http://[主机名]:8087
注意端口号冲突问题:
可以在启动的脚本文件里修改WEBUI端口号:也就是在sbin/start-master.sh中修改端口号!
九、关闭退出
- 关闭spark主机
sbin/stop-master.sh
- 关闭Worker从机
sbin/stop-slaves.sh
- 关闭hadoop集群
补充命令:
- cp命令:cp 源文件 目标文件(夹)
负责把一个源文件复制到目标文件(夹)下。如下图所示,复制到文件夹下,则文件名保持不变,复制到文件中,则文件名变更。如果目标文件已经存在或目标文件夹中含有同名文件,则复制之后目标文件或目标文件夹中的同名文件会被覆盖。
- cp -r 命令 :复制源文件夹到目标文件夹下
命令格式为:cp -r 源文件夹 目标文件夹
-
mv 命令:用来移动文件或者将文件改名
格式:mv [选项] 源文件或目录 目标文件或目录
选项:
-b 若需覆盖文件,则在覆盖文件前先进行备份
-f 强制覆盖,若目标文件已存在同名文件,使用该参数时则直接覆盖而不询问
-i 若目标文件已存在同名文件,则提示询问是否覆盖
-u 若目标文件已存在需移动的同名文件,且源文件比较新,才会更新文件
-t 指定mv的目标目录,改选项使用于移动多个源文件到一个目录的情况,此时目标文件在前,源文件在后 -
chmod
sudo chmod -(代表类型)×××(所有者)×××(组用户)×××(其他用户)
0 [000] 无任何权限
4 [100] 只读权限
6 [110] 读写权限
7 [111] 读写执行权限sudo chmod 600 ××× (只有所有者有读和写的权限)
sudo chmod 644 ××× (所有者有读和写的权限,组用户只有读的权限)
sudo chmod 700 ××× (只有所有者有读和写以及执行的权限)
sudo chmod 666 ××× (每个人都有读和写的权限)
sudo chmod 777 ××× (每个人都有读和写以及执行的权限)
-
chown (选项)(参数)
选项 描述
-c或——changes 效果类似“-v”参数,但仅回报更改的部分;
-f或–quite或——silent 不显示错误信息;
-h或–no-dereference 只对符号连接的文件作修改,而不更改其他任何相关文件;
-R或——recursive 递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——version 显示指令执行过程;
–dereference 效果和“-h”参数相同;
–help 在线帮助;
–reference=<参考文件或目录> 把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;
–version 显示版本信息。
当只需要修改所有者时,可使用如下 chown 命令的基本格式:
[root@localhost ~]# chown [-R] 所有者 文件或目录
如果需要同时更改所有者和所属组,chown 命令的基本格式为:
[root@localhost ~]# chown [-R] 所有者:所属组 文件或目录