hdfs搭建

單機(jī)

添加用戶(hù)
~$ addUser hadoop
JAVA
export $JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
# 或者在hadoop配置文件hadoop/etc/hadoop/hadoop-env.sh中配置

下載hadoop穩(wěn)定版2.9.2

~$ wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz
~$ tar -xzf hadoop-2.9.2.tar.gz
~$ mv hadoop-2.9.2 /usr/local/hadoop
~$ sudo chown hadoop.hadoop hadoop -R

測(cè)試

./bin/hadoop

輸出正常則單機(jī)成功

hdfs集群

配置

hosts

__內(nèi)網(wǎng)IP__ __master_hostname__
__內(nèi)網(wǎng)IP__ __slave_hostname__

配置各服務(wù)器間的ssh密鑰訪(fǎng)問(wèn)

core-site.sh
<configuration>
    <!-- 指定HADOOP所使用的文件系統(tǒng)schema(URI),HDFS(NameNode)的地址 -->
    <property>
         <name>fs.default.name</name>
         <value>hdfs://__hostanme__:9100</value>
    </property>
    <!-- 指定hadoop運(yùn)行時(shí)產(chǎn)生文件的存儲(chǔ)目錄 -->
    <property>  
         <name>hadoop.tmp.dir</name>  
         <value>/var/services/hadoop/tmp</value>  
         <description>A base for other temporary directories.</description> 
    </property>  
</configuration>

hadoop-env.sh

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

hdfs-site.sh

<configuration>
    <!-- 指定namenode的http通信地址 -->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>__namenode_hostname__:51070</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>__secondary_node_hostname__:51090</value>
    </property>
    <!-- 指定HDFS副本的數(shù)量 -->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <!-- 如果是通過(guò)公網(wǎng)IP訪(fǎng)問(wèn)內(nèi)網(wǎng)集群 -->
    <property>
        <name>dfs.client.use.datanode.hostname</name>
        <value>true</value>
        <description>only cofig in clients</description>
    </property>
</configuration>

slaves

__slave_hostname__

masters

__secondary_node_hostname__

環(huán)境變量

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

格式化集群

hadoop namenode -format

啟動(dòng)/停止集群

~$ sudo su hadoop
~$ start-dfs.sh
~$ stop-dfs.sh

常用命令

#查看目錄文件
hdfs dfs -ls /
#刪除目錄
hdfs dfs -rm -r /test
SparkConf配置

// 如clinet在外網(wǎng)需要在client端配置已hostname方式訪(fǎng)問(wèn)集群,否則是通過(guò)集群配置的內(nèi)網(wǎng)地址

new SparkConf()
    ...
    .set("dfs.client.use.datanode.hostname","true")
    ...

Client設(shè)置Hadoop用戶(hù)環(huán)境變量(否則可能出現(xiàn)permission error)

export HADOOP_USER_NAME=hadoop

spark driver以linux service啟動(dòng)時(shí)有可能無(wú)法獲取到該環(huán)境變量,導(dǎo)致權(quán)限錯(cuò)誤,可以改變hdfs目錄對(duì)應(yīng)的owner來(lái)實(shí)現(xiàn)訪(fǎng)問(wèn)

備注

如果hdfs集群以主機(jī)名方式配置,則需要客戶(hù)端(eg. spark driver)在連接集群前配置所有集群節(jié)點(diǎn)對(duì)應(yīng)的hosts,否則單指定namenode節(jié)點(diǎn)可能會(huì)出現(xiàn)UnresolvedAddressException: null

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容