1. 程式人生 > >大數據學習(一)linux基礎

大數據學習(一)linux基礎

info spa 包含 目的 創建 http -- 刪除 family

知識體系:

一、Linux基礎

二、Hadoop的背景知識與起源

三、搭建Hadoop環境

四、Apache Hadoop的體系結構

五、HDFS

六、MapReduce

七、MapReduce編程案例

八、NoSQL數據庫之:HBase

九、數據分析引擎之:Hive

十、數據分析引擎之:Pig

十一、數據采集引擎:Sqoop和Flume

十二、集成管理工具:HUE

十三、Hadoop HA的實現和HDFS的聯盟

十四、NoSQL數據庫之:Redis

十五、實時處理框架:Apache Storm


第一章、Linux基礎

一、Linux的實驗環境


(*)版本:RedHat 7.4 64位 自帶netcat服務器(測試:Spark Streaming)
(*)VM:12
(*)類型:Redhat Linx 7 64位
(*)網卡:僅主機模式
(*)一共5臺虛擬機:安裝JDK、配置主機名、關閉防火墻
192.168.157.11 bigdata11
192.168.157.12 bigdata12
192.168.157.13 bigdata13
192.168.157.14 bigdata14
192.168.157.15 bigdata15

技術分享圖片

技術分享圖片

二、配置Linux和Linux的目錄結構


1、對Linux了解
2、關閉防火墻
查看防火墻的狀態:systemctl status firewalld.service
關閉防火墻: systemctl stop firewalld.service
禁用防火墻(永久)systemctl disable firewalld.service

3、設置主機名 (配置文件) /etc/hosts
vi /etc/hosts

192.168.157.11 bigdata11

三、vi編輯器:相當於linux的記事本


三種模式:
1、編輯模式:等待命令的輸入
按i--> 進入:插入模式
按:(冒號)進入命令模式

2、插入模式: 按esc鍵回到編輯模式

3、命令模式
(*) w: 保存
(*) q: 退出
(*) wq: 保存退出
(*) 打開行號:set number
關閉行號: set nonumber
(*) 換行: set wrap
set nowrap

四、文件目錄操作命令(重點掌握:後面操作HDFS的時候,很方便)

(*)ls 顯示文件和目錄列表
-l 列出文件的詳細信息
-a 列出當前目錄所有文件,包含隱藏文件

隱藏文件:.bash_profile 設置環境變量:JAVA_HOME、HADOOP_HOME
隱藏目錄:.ssh ----> 配置Hadoop和Spark的免密碼登錄

查詢Hadoop的中文件:hdfs dfs -ls /

(*)當前目錄:pwd
/root ---> root用戶的HOME目錄(快捷方式: ~)

(*)mkdir 創建目錄
-p 父目錄不存在情況下先生成父目錄

約定:mkdir /root/tools ---> 所有的安裝包
mkdir /root/training ---> 安裝目錄

在Hadoop中創建目錄:hdfs dfs -mkdir /aaa

(*)cd 切換目錄

(*)touch 生成一個空文件
echo 生成一個帶內容文件 ----> 更常用的用法:查看環境變量
echo $JAVA_HOME

(*)cat、tac 顯示文本文件內容
cat是從第一行開始寫;tac是從最後一行開始寫
舉例: cat a.txt
查看Hadoop中文件的內容: hdfs dfs -cat /a.txt

(*)cp 復制文件或目錄
cp a.txt data.txt

在Hadoop中拷貝數據: hdfs dfs -cp /a.txt /b.txt

(*)rm 刪除文件
-r 同時刪除該目錄下的所有文件
-f 強制刪除文件或目錄

rm -rf a.txt
在Hadoop中刪除文件:hdfs dfs -rmr /a.txt

(*)kill:殺死
參數: -9 強制殺死
-3

(*)tar命令:打包壓縮

五、Linux的權限管理(Hadoop的HDFS權限非常像)
1、權限的類型:r 讀
w 寫
x 執行

2、使用ls -l或者ll命令查看權限


六、安裝常用軟件:安裝JDK的時候,講講tar命令
tar -zxvf jdk-8u144-linux-x64.tar.gz -C ~/training/
設置環境變量:vi ~/.bash_profile
JAVA_HOME=/root/training/jdk1.8.0_144
export JAVA_HOME

PATH=$JAVA_HOME/bin:$PATH
export PATH

生效環境變量: source ~/.bash_profile

七、案例:Java的死鎖分析 ---> 介紹一個工具(kill -3 的命令)
目的:找到死鎖 性能診斷
Java提供了一個非常強大的性能診斷工具:Thread Dump(文本信息)

使用 jps 命令查看java進程
1、Linux:kill -3 PID(就是Java的進程號)

2、Windows: 按ctrl+break(fn+B)鍵

java死鎖代碼:

package DeadLock;

public class DeadLock {
    final Object lockA = new Object();
    final Object lockB = new Object();
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        DeadLock dl = new DeadLock();
        dl.startLock();
    }
    public void startLock(){
        ThreadA a = new ThreadA(lockA,lockB);
        ThreadB b = new ThreadB(lockA,lockB);
        
        a.start();
        b.start();

        
    }
}
class ThreadA extends Thread{
    private Object lockA=null;
    private Object lockB=null;
    
    public ThreadA(Object a,Object b){
        this.lockA=a;
        this.lockB=b;
    }
    public void run(){
        synchronized(lockA){
            System.out.println("*** Thread A: ***: Lock A");
            try {
                Thread.sleep(3000);
            } catch (Exception e) {
                // TODO: handle exception
            }
            synchronized(lockB){
                System.out.println("*** Thread A: ***: Lock B");    
            }
        }
        System.out.println("*** Thread A: ***: Finished");
    }
}
class ThreadB extends Thread{
    private Object lockA=null;
    private Object lockB=null;
    
    public ThreadB(Object a,Object b){
        this.lockA=a;
        this.lockB=b;
    }
    public void run(){
        synchronized(lockB){
            System.out.println("*** Thread B: ***: Lock B");
            try {
                Thread.sleep(3000);
            } catch (Exception e) {
                // TODO: handle exception
            }
            synchronized(lockA){
                System.out.println("*** Thread B: ***: Lock A");    
            }
        }
        System.out.println("*** Thread A: ***: Finished");
    }
}

大數據學習(一)linux基礎