大数据从入门到弃坑

本弃坑指南版本有可能混搭请自行更改版本名称和目录
本弃坑指南最后一次部署版本 
jdk1.8.0_11
hadoop-2.9.0.tar.gz 
spark-2.4.3-bin-hadoop2.7.tgz

挂在本地yum
mkdir /media/cdrom/
mount /dev/cdrom  /media/cdrom/
cd /etc/yum.repos.d/
mkdir bak
mv *.* bak/ 
cd bak/
mv CentOS-Media.repo ../
cd ../
vi CentOS-Media.repo
vi 
:i    进入编辑
:q!    强制退出
:w!    保存退出
yum list 

[base]
name=RedHat
baseurl=file:///mnt/cdrom    #注:这里的baseurl就是你挂载的目录,在这里是/mnt/cdrom
enabled=1                            #注:这里的值enabled一定要为1  gpgckeck的值无所谓
gpgckeck=0
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7                    #注:这个你cd /mnt/cdrom/可以看到这个key,这里仅仅是个例子
安装新的编辑器
yum install nano
如果可以联网
yum install wget
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
不能联网跳过这4步

安装ssh
yum  install openssh-server openssh-clients

工具Xshell ssh上liunx


启动网卡
cd /etc/sysconfig/network-scripts
nano ifcfg-ens33
ONBOOT=no => ONBOOT=yes

设置固定IP
BOOTPROTO=dhcp => BOOTPROTO=static 
IPADDR=192.168.211.7 IP地址

GATEWAY=192.168.211.1 网关 
NETMASK=255.255.255.0 掩码
DNS1=8.8.8.8

重启网络服务
systemctl restart network

网络工具
yum install net-tools
ifconfig ping命令

上传下载
yum install -y lrzsz
rz 上传
sz 下载


上传软件到服务器
tar -zcvf my.tar aaa/       压缩并打包
tar -xvf my.tar -C xx/xxx    解包

pwd 显示当前路径
上传 java包

配置java环境变量
export JAVA_HOME=/usr/lib/java/jdk1.8.0_11
export PATH=$PATH:$JAVA_HOME/bin
nano /etc/profile
刷新缓存
source /etc/profile

/root/bigdata/lib/hadoop-2.9.0/etc/hadoop


hadoop-env.sh
export JAVA_HOME=/root/bigdata/lib/jdk1.8.0_11

core-site.xml

<property>
<name>fs.defaultFS</name>
<value>hdfs://hdp01:9000</value>
</property>

<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hdpdata</value>
</property>


hdfs-site.xml

<property>
<name>dfs.replication</name>
<value>2</value>
</property>

<property>
<name>dfs.http.address</name>
<value>0.0.0.0:50070</value>
</property>

不配置就是单机版
mapred-site.xml.template
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>512</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>1024</value>
</property>
配置老大
yarn-site.xml

<property>
<name>yarn.resourcemanager.hostname</name>
<value>hdp01</value>
</property>

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>


克隆的改主机名
nano /etc/sysconfig/network
hostname hdp01

nano /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.211.7 hdp01
192.168.211.8 hdp02
192.168.211.9 hdp03


配置hadoop环境变量pwd 获取目录
/root/bigdata/lib/hadoop-2.9.0

export HADOOP_HOME=/root/bigdata/lib/hadoop-2.9.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
格式化hadoop
hadoop namenode -format
启动集群
hadoop-daemon.sh start namenode 
hadoop-daemon.sh start datanode 
yarn-daemon.sh start  resourcemanager

jps查看进程


systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

为了后面避免报未知错误
解决办法: 
关闭防火墙: 
systemctl -stop firewalld.service 
永久关闭防火墙: 
systemctl disable firewalld.service

永久关闭selinux: 
vi /etc/selinux/config文件 
设置“SELINUX=disabled”


nano /etc/sysconfig/iptables
service iptables restart/start/stop
7077
8032
8042
8088
8080
8081
9000
50070
50010
50075



注意防火墙端口
权限不统一

hadoop fs -put 1.txt /    加入文件
hadoop fs -ls /        查看文件
hadoop fs -get /1.txt    下载文件
hadoop fs -mkdir -p /wordcount/input 建立文件夹
hadoop fs -put 1.txt 2.txt /wordcount/input 传多个
hadoop fs -rm output2/* 删除文件
hadoop fs -rm -r output2 删除文件夹
hadoop fs -cat /user/output1/part-r-00000 查看内容

wordcount
/home/hadoop/apps/hadoop-2.9.0/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.9.0.jar wordcount /wordcount/input /wordcount/output
hadoop jar wc.jar org.bigdata.mr.wcdemo.WordcountDriver /wordcount/input /wordcount/output
单机版
hadoop.tmp.dir下去找namenode和datanode的VERSION文件 只需要把其中一个clusterID改成相同的就可以了


/etc/hadoop/log4j.properties
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR  



eclipse参数伪造
-DHADOOP_USER_NAME=hadoop


进入conf/
spark-env.sh.template

export JAVA_HOME=/usr/lib/java/jdk1.8.0_11
export SPARK_MASTER_IP=hdp01  #SPARK_MASTER_HOST 新版用这个
export SPARK_MASTER_PORT=7077

slaves.template
cp slaves.template slaves
hdp01
hdp02
hdp03

/home/hadoop/bigdata/spark-2.2.1-bin-hadoop2.7/bin


export JAVA_HOME=/usr/lib/java/jdk1.8.0_11
export HADOOP_HOME=/home/hadoop/bigdata/hadoop-2.9.0
export SPARK_HOME=/home/hadoop/bigdata/spark-2.2.1-bin-hadoop2.7
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SPARK_HOME/bin:$SPARK_HOME/sbin
$SPARK_HOME/sbin/start-all.sh
nano /etc/selinux/config  
SELINUX=disabled  

全部环境变量
nano /etc/profile

export JAVA_HOME=/root/bigdata/lib/jdk1.8.0_11
export HADOOP_HOME=/root/bigdata/lib/hadoop-2.9.0
export SPARK_HOME=/root/bigdata/lib/spark-2.2.1-bin-hadoop2.7   
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/sbin:$SPARK_HOME/bin:$SPARK_HOME/sbin

source /etc/profile

# 启动所有服务
start-all.sh
# 启动 master
start-master.sh
# 启动所有 worker
start-slaves.sh
# 启动单个 worker
start-slave.sh spark://hdp01:7077

# 关闭所有服务
stop-all.sh
# 关闭 master
stop-master.sh
# 关闭所有 worker
stop-slaves.sh 
# 关闭 worker
stop-slave.sh




pyspark
转换
.map(...)转换,每一行的转换
.filter(...)查询
.flatMap(...)转换,和map不同返回一个扁平结果
.distinct(...)转换,高开销去重
.sample(...)随机采样 (False,0.1,6666) 是否替换,抽样10%,随机种子
.Join(...)
.leftOuterJoin(...)连接查询
.instrsection(...)匹配相等部分
.repartition(...) 谨慎使用会更改分区

操作
.take(n)取前几行
.collect(...)返回所有谨慎使用
.reduce(...)使用指定方法过滤数据
.count(...)统计元素数量
.saveAsTextFile(...)保存文件
.foreach(...)一个接一个遍历元素,适合把数据保存到默认不支持的数据库

缓存
.cache()

DataFrame
json=spark.read.json(....)读取格式化数据
json.createOrReplaceTempView("json")创建零时表

DataFrameAPI查询
.show(n)查询前n行
.sql(...).collect()使用sql语句查询数据,这里可以使用.collect() .show(n) .take(n)非小数据时不建议使用.collect()

指定模式
.printSchema()查看字段类型(模式定义)
导入
from pyspark.sql.types import *
stringCSVRDD=sc.parallelize([(123,'Katie',19,'brown')])
schema=StructType([StructField("id",LongType(),True)])
spark.createDataFrame(stringCSVRDD,schema)

利用 StructType和StructField定义类型,多数情况下我们不需要使用指定模式,使用默认的推断模式

利用DataFrameAPI查询
.collect()
.show()
.take()
.count()
.filter() 筛选子句
例句:
csv.select("id","age").filter("age=22").show()
csv.select(csv.id,csv.age,csv.name).filter(csv.age==22).show()
csv.select("name","eyeColor","age").filter("eyeColor like 'b%'").show()

利用Sql查询
spark.sql()
例句:
spark.sql("select count(0) from csv").show()
spark.sql("select id,age from csv where age=22").show()
spark.sql("select id,age,name,eyeColor from csv where eyeColor like 'b%'").show()

读取文件数据可以读取任何可以分割的序列数据
spark.read.csv(airportFilePath,header='true',inferSchema='true',sep='\t')
.cache()缓存

数据建模
检查数据重复
df.count() 和 df.distinct().count()比较
df.dropDuplicates() 移除相同的行
df.select([c for c in df.columns if c!='id']).distinct().count() 不包含某列的查重
df.dropDuplicates(subset=[c for c in df.columns if c!='id']) 去除不包含某列的重复

查找相同数据
import pyspark.sql.functions as fn
df.agg()
df.agg(
fn.count('id').alias('count'),
fn.countDistinct('id').alias('distinct')
).show()
重新分配个新ID
df.withColumn('new_id',fn.monotonically_increasing_id()).show()

熟悉你的数据
http://spark.apache.org/docs/latest/api/python/pyspark.sql.html#module-pyspark.sql.types。


描述性统计
import pyspark.sql.types as typ
聚合函数如下
avg()、count()、countDistinct()、first()
kurtosis()、max()、mean()、min()、skewness()、stddev()、
stddev_pop()、stddev_samp()、sum()、sumDistinct()、
var_pop()、var_samp()和 variance()。


可视化
import  matplotlib.pyplot as plt
数据达到数量级别是没法直接显示,首先得聚合
 

  

posted @ 2019-08-21 11:16  农村手艺人  阅读(161)  评论(0编辑  收藏  举报