大數據從入門到棄坑

本棄坑指南版本有可能混搭請自行更改版本名稱和目錄
本棄坑指南最後一次部署版本 
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.163.com/.help/CentOS7-Base-163.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
數據達到數量級別是無法直接顯示,首先得聚合
 
相關文章
相關標籤/搜索