hadoop,hbase集羣搭建的又一次總結

前言

因爲項目的須要,hadoop2.2.0與hbase0.98.5的集羣搭建已經有一段時間了。今日從新研究了一遍整個集羣的搭建,對整個搭建過程有了進一步的理解。html

準備工做

  • 時間的同步
  • 主節點上使用ssh-keygen生成密鑰,並使用ssh-copy-id將公鑰拷貝到其餘機器。注意主節點本身也須要安裝ssh server,而且本身對本身也要能無密碼登陸
  • JAVA_HOME的設置

1. hdfs

之前搭建這個平臺主要是使用hbase做爲存儲數據庫,因此只使用了hadoop的hdfs。其核心配置文件有三個:hadoop-env.sh,core-site.xml,hdfs-site.xml。(固然,yarn框架也使用到了hadoop-env.shcore-site.xml,這裏分開看。)下面分開來看:java

  • hadoop-env.sh
    這個文件主要配置如java路徑、hadoop配置文件目錄、日誌目錄等環境變量,最簡單的配置是隻修改java路徑(JAVA_HOME)而不修改其餘。不過今天我想重啓集羣時發現stop-hdfs.sh腳本沒法關閉集羣,網上找到的緣由是集羣進程的pid號默認放在/tmp目錄下致使pid號的按期刪除,而管理腳本找不到pid號致使管理失敗。因而考慮將pid放到本身定義的目錄下。hadoop-env.sh文件中定義了一個HADOOP_PID_DIR變量,因而能夠簡單地在.bashrc文件中加入該變量便可。若是不行,在hadoop-env.sh中直接定義該變量。node

  • core-site.xml
    這個文件核心設置以下:web

xml<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
        <description>指明瞭默認的hdfs的路徑和端口。在HBase指明在hdfs上的存儲位置時用的就是這個路徑</description>
    </property>

    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/user/tmp/hadoop</value>
        <description>hadoop的一些臨時文件存放目錄。其餘一些目錄也使用了該目錄做爲基礎</description>
    </property>
</configuration>

我配置了這兩個參數後系統就能夠正常工做了。詳細的官網配置地址在此處算法

  • hdfs-site.xml
    核心配置以下:
xml<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/home/user/tmp/hadoop/dfs/name</value>
        <description>名字節點數據的存放目錄</description>
    </property>

    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/home/user/tmp/hadoop/dfs/data</value>
        <description>數據節點數據的存放目錄</description>
    </property>

    <property>
        <name>dfs.replication</name>
        <value>3</value>
        <description>hdfs備份的數目</description>
    </property>
</configuration>

配置很簡單。詳細配置在此處數據庫

2.yarn

hadoop 2.2.0採用了第二代架構yarn,和第一代相比有着不小的改變。其配置文件有yarn-env.sh,yarn-site.xml,mapred-site.xmlapache

  • yarn-env.sh
    這個文件也是設置如java路徑等環境變量。能夠在文件中或者直接在.bashrc中設置如JAVA_HOME或者YARN_PID_DIR(設置pid的存放目錄)等變量。pid默認存放在/tmp目錄下,丟失也會致使stop-yarn.sh等腳本的失效。(stop-yarn.sh腳本實際上調用的是yarn-daemon.sh,其中能夠發現YARN_PID_DIR變量)。segmentfault

  • yarn-site.xml
    核心配置以下:bash

xml<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>localhost</value>
        <description>resourcemanager的主機名。默認爲0.0.0.0。被不少其餘的參數做爲基礎</description>
    </property>

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

    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
</configuration>

如上的三條配置便可成功運行。詳細配置見此處架構

  • mapred-site.xml
xml<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>localhost:10020</value>
    </property>

    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>localhost:19888</value>
    </property>
</configuration>

該配置文件主要配置如下和mapreduce任務相關的配置。甚至後面兩條關於address的配置也不是必須的,不過我沒去嘗試。完整配置在這裏

3. hadoop其餘配置文件

其餘配置文件包括slavesmasters。很簡單,不詳述。

配置完成後使用scp命令同步到其餘節點。先使用hadoop namenode -format格式化名字節點後,在啓動腳本start-dfs.sh看是否成功。

4. zookeeper

前一段時間安裝的hbase用的是自帶的zookeeper。後來發現仍是獨立配置zookeeper要方便些,因而就接觸了一下zookeeper的安裝。其配置文件只有zoo.cfg,官網給出的單機配置以下:

configurationtickTime=2000
dataDir=/home/user/tmp/zookeeper
clientPort=2181

集羣配置也不復雜,官網很詳細,也不贅述。有一點注意的是集羣數目最好是奇數。因爲其選舉的算法,奇數是最優的。
zookeeper默認的啓動日誌zookeeper.out是放在當前目錄下的(zkEnv.sh中設置ZOO_LOG_DIR變量,zkServer.sh中指定zookeeper.out文件),因此能夠在zkEnv.sh中設置ZOO_LOG_DIR變量指定本身的日誌存放路徑。
啓動使用zkServer.sh start命令。

參考:
解讀zookeeper的配置項
修改Zookeeper日誌輸出路徑

5. hbase

hbase的配置文件有hbase-env.shhbase-site.xml。其餘的配置如regionservers很簡單,不贅述。hbase配置時還須要注意調整hosts文件以及系統的打開文件數目等的限制。見個人上次總結

  • hbase-env.sh
    最好在其中設置JAVA_HOME而不是用系統的JAVA_HOME參數(官方文檔好像有提到這一點)。能夠在其中設置HBASE_PID_DIR以修改pid的存放路徑。因爲使用獨立的zookeeper,還須要設置export HBASE_MANAGES_ZK=false來禁止使用自帶的zookeeper。

  • hbase-site.xml

xml<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://localhost:9000/hbase</value>
        <description>hbase數據存放位置。這裏是放在了hdfs上。</description>
    </property>

    <property>
        <name>hbase.tmp.dir</name>
        <value>/home/user/tmp/hbase</value>
        <description>hbase的一些臨時文件存放目錄。</description>
    </property>

    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
        <description>設置爲分佈式</description>
    </property>

    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>localhost</value>
        <description>設置zookeeper的集羣。若是是獨立zookeeper,則此處填寫zookeeper集羣的每臺機器,用逗號隔開;若是是自帶zookeeper,則填寫要啓動zookeeper服務的機器列表。自帶zookeeper不要忘了設置hbase.zookeeper.property.dataDir設置臨時文件存放目錄</description>
    </property>

</configuration>

hbase-site.xml的完整配置見此處

小結

此處把整個集羣安裝的配置過了一遍,僅僅包含了最小化的設置。更爲具體專業的設置還須要本身進一步深刻學習瞭解。

參考:修改 hadoop 集羣及hbase集羣的pid文件存放位置

相關文章
相關標籤/搜索