本棄坑指南版本有可能混搭請自行更改版本名稱和目錄 本棄坑指南最後一次部署版本 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 數據達到數量級別是無法直接顯示,首先得聚合