1. 程式人生 > >hadoop--01(hadoop叢集搭建)

hadoop--01(hadoop叢集搭建)

1.什麼是HADOOP?

     HADOOP是apache旗下的一套開源軟體平臺,HADOOP提供的功能:利用伺服器叢集,根據使用者的自定義業務邏輯,對海量資料進行分散式處理

  1. HADOOP的核心元件有
    1. HDFS(分散式檔案系統)
    2. YARN(運算資源排程系統)
    3. MAPREDUCE(分散式運算程式設計框架)
  2. 廣義上來說,HADOOP通常是指一個更廣泛的概念——HADOOP生態圈

2.HADOOP在大資料、雲端計算中的位置和關係

     雲端計算是分散式計算、平行計算、網格計算、多核計算、網路儲存、虛擬化、負載均衡等傳統計算機技術和網際網路技術融合發展的產物。藉助IaaS(基礎設施即服務)、PaaS(平臺即服務)、SaaS(軟體即服務)等業務模式,把強大的計算能力提供給終端使用者。現階段,雲端計算的兩大底層支撐技術

為“虛擬化”和“大資料技術”。而HADOOP則是雲端計算的PaaS層的解決方案之一,並不等同於PaaS,更不等同於雲端計算本身。

3.重點組建

HDFS:分散式檔案系統

MAPREDUCE:分散式運算程式開發框架

HIVE:基於大資料技術(檔案系統+運算框架)的SQL資料倉庫工具

HBASE:基於HADOOP的分散式海量資料庫

ZOOKEEPER:分散式協調服務基礎元件

Mahout:基於mapreduce/spark/flink等分散式運算框架的機器學習演算法庫

Oozie:工作流排程框架

Sqoop:資料匯入匯出工具

Flume:日誌資料採集框架

4.hadoop叢集搭建

    三臺虛擬機器:系統centos6.5 hadoop2.6.4  jdk1.7

   1.準備Linux環境

      1.0先將虛擬機器的網路模式選為NAT

      1.1修改主機名:vi /etc/sysconfig/network

         

     1.2修改IP:vim /etc/sysconfig/network-scripts/ifcfg-eth0   不修改也行

     1.3修改主機名和IP的對映關係:vim /etc/hosts

192.168.25.139   hadoop1
192.168.25.140   hadoop2
192.168.25.141   hadoop3

       1.4關閉防火牆

#檢視防火牆狀態
service iptables status
#關閉防火牆
service iptables stop
#檢視防火牆開機啟動狀態
chkconfig iptables --list
#關閉防火牆開機啟動
chkconfig iptables off

1.5 新增普通使用者hadoop

     useradd hadoop

      #為storm使用者新增密碼:

       echo 123456| passwd --stdin hadoop

     #將hadoop新增到sudoers,這是重新建立一個使用者組,他有著自己的home/ hadoop目錄

     echo "hadoop ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/ hadoop

     chmod 0440 /etc/sudoers.d/ hadoop

     #修改配置檔案sudo vim /etc/sudoers

      root ALL=(ALL) ALL

      hadoop ALL=(ALL) ALL

     給hadoop使用者新增執行的許可權然後強制儲存
 

  2.安裝jdk,

JAVA_HOME=/usr/local/jdk1.7.0_71
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

這些處理好了開始安裝hadoop

   1.上傳編譯好的hadoop壓縮包,並且解壓

      tar -zxvf cenos-6.5-hadoop-2.6.4.tar.gz  -C apps/

     

    配置配置檔案hadoop-env.sh    主要配置環境變數 

     export JAVA_HOME=/usr/local/jdk1.7.0_71

     

    配置配置檔案 core-site.xml  主要指定hadoop的檔案系統用哪個(fdfs),指定namenode是誰,埠是多少,配置叢集裡面每個程序工作的資料目錄

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

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

    

  配置hdfs-site.xml  配置hdfs的副本的數量

<configuration>
        <property>
			<name>dfs.replication</name>
			<value>2</value>
		</property>
         <property>
             <name>dfs.namenode.name.dir</name>
             <value>/home/hadoop/dfs/name</value>
        </property>
        <property>
             <name>dfs.datanode.data.dir</name>
             <value>/home/hadoop/hdfs/data</value>
        </property>
</configuration>

               

配置mapred-site.xml.template 並改名字為mapred-site.xml

<configuration>
		<property>
			<name>mapreduce.framework.name</name>
			<value>yarn</value>
		</property>
</configuration>

    

配置yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->

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

</configuration>

    

  2.配置hadoop環境變數:

export HADOOP_HOME=/home/hadoop/apps/hadoop-2.6.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native  
export HADOOP_OPTS=-Djava.library.path=$HADOOP_PREFIX/lib

  3.分發apps資料夾到其他機器,配置環境變數

  4.格式化namenode(是對namenode進行初始化):hdfs namenode -format             (hadoop namenode -format)

              

5.    啟動hadoop
       先啟動HDFS
       sbin/start-dfs.sh

       檢視datanode的啟動情況:

        

       這裡注意多次格式化namenode後可能出現datanode起不來的情況,把配置檔案中dfs.datanode.data.dir在本地系統的路徑下的current/VERSION中的clusterID改為與namenode一樣。重啟即可!這裡就把dfs檔案刪掉就好了.(問題解決是hdfs配置檔案的問題)

      再啟動YARN
      sbin/start-yarn.sh

     檢視yarn的啟動情況:

    


        http://192.168.25.130:50070 (HDFS管理介面)

  只啟動一個namenode或者datanode

  hadoop-daemon.sh start namenode     hadoop-daemon.sh start datanode

  配置slaves:

 

  配置免密登陸
  ssh-keygen -t rsa(回車)

  ssh-copy-id localhost

  cd .ssh

  cp id_rsa.pub authorized_keys

  chmod 600 authorized_keys

  測試本地免密登陸:ok 沒有問題
   

  將金鑰傳送到hadoop2,hadoop3    ssh-copy-id hadoop2   ssh-copy-id hadoop3

   測試登陸hadoop2:    ok沒問題
  

  停止hdfs:sbin/stop-dfs.sh

  上傳一個檔案:

   首先查根目錄下有什麼檔案:hadoop fs -ls /

  

 什麼也沒有,現在上傳一個檔案:hadoop fs -put canglaoshi.avi /

 有了:

 命令檢視也有了:

我們配置的備份資料是兩份,這兩份會存到哪個機器呢?首先就近就會存放一份這這臺機器上,還有一個副本就放其他機器上

  根據所配置的配置檔案來找到副本的數量,

 上傳的小檔案可以找到他所有的副本的數量,未滿128M沒有分片

                          

 

     上傳大檔案:被分成了兩片,分別存於不同的機器上
                                  

    安裝包傳上去被切成了幾塊,就沒法解壓了,但是把他拼起來就有辦法解壓:

       

可以從fdfs上下載下來:hadoop fs -get /canglaoshi.avi