大數據實驗室(大數據基礎培訓)——Hadoop的安裝、配置及基礎使用

爲某企業作的培訓,完整文檔見:http://gudaoxuri.github.io/bd-lab/html

6. Hadoop

此主題介紹Hadoop的安裝、配置及基礎使用。java

Hadoop介紹
https://www.ibm.com/developerworks/cn/data/library/techarticle/dm-1209hadoopbigdata/node

— ibm.comgit

Hadoop基本信息github

官網:http://hadoop.apache.org/
官方教程:http://hadoop.apache.org/docs/current/
不錯的文章:http://www.cnblogs.com/edisonchou/p/4470682.html

 

6.1. 環境準備

# 切換到工做空間
cd /opt/workspaces
mkdir data/hadoop
# 建立Hadoop NameNode目錄
mkdir -p data/hadoop/hdfs/nn
# 建立Hadoop DataNode目錄
mkdir -p data/hadoop/hdfs/dn
# 建立Hadoop臨時目錄
mkdir data/hadoop/tmp
# 建立Hadoop日誌目錄
mkdir logs/hadoop

官方教程apache

http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html#Pseudo-Distributed_Operation

6.2. 安裝

wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz
tar -zxf hadoop-2.7.2.tar.gz
rm -rf hadoop-2.7.2.tar.gz
mv hadoop-2.7.2 ./frameworks/hadoop

6.3. 配置(僞分佈式)

vi ./frameworks/hadoop/etc/hadoop/hadoop-env.sh安全

# 添加JDK目錄
export JAVA_HOME=/opt/env/java
# 指定Hadoop日誌寫入到先前定義的目錄
export HADOOP_LOG_DIR=/opt/workspaces/logs/hadoop

vi ./frameworks/hadoop/etc/hadoop/core-site.xml分佈式

<!--指定HDFS的地址,bd爲對應的hostname,請自行修改-->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://bd:9000</value>
</property>
<!--指定Hadoop的臨時目錄到先前定義的目錄-->
<property>
    <name>hadoop.tmp.dir</name>
    <value>file:/opt/workspaces/data/hadoop/tmp</value>
</property>

hadoop.tmp.dir 是hadoop文件系統依賴的基礎配置,如hdfs-site.xml中不指定namenode和datanode的存放位置默認就放在這個路徑中。hadoop.tmp.dir 默認存放在/tmp下,啓動的時會被清空。

vi ./frameworks/hadoop/etc/hadoop/hdfs-site.xmloop

<!--副本數,默認是3,因爲只有一個節點,因此不須要備份-->
<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>
<!--指定NameNode目錄到先前定義的目錄-->
<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/opt/workspaces/data/hadoop/hdfs/nn</value>
</property>
<!--指定DataNode目錄到先前定義的目錄-->
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/opt/workspaces/data/hadoop/hdfs/dn</value>
</property>
<!--實驗環境,禁用權限認證-->
<property>
    <name>dfs.permissions.enabled</name>
    <value>false</value>
</property>

生產環境不容許dfs.permissions.enabled=false這可能致使HDFS數據被非法修改!

6.4. 初始化

格式化NameNode測試

./frameworks/hadoop/bin/hdfs namenode -format

6.5. 啓動與中止

# 啓動NameNode
./frameworks/hadoop/sbin/hadoop-daemon.sh start namenode
# 啓動DataNode
./frameworks/hadoop/sbin/hadoop-daemon.sh start datanode
# 中止NameNode
./frameworks/hadoop/sbin/hadoop-daemon.sh stop namenode
# 中止DataNode
./frameworks/hadoop/sbin/hadoop-daemon.sh stop datanode

不一樣的啓動(中止)命令

start-all.sh 啓動全部服務,不推薦使用 start-dfs.sh 啓動HDFS start-mapred.sh 啓動MapR

6.6. 測試

# 查看HDFS文件
./frameworks/hadoop/bin/hadoop fs -ls /

6.7. HDFS經常使用操做

# 上傳文件到HDFS
hadoop fs -put localfile /user/hadoop/hadoopfile hdfs://<host>:<port>/<path>
hadoop fs -put localfile1 localfile2 /user/hadoop/hadoopdir
hadoop fs -put localfile hdfs://nn.example.com/hadoop/hadoopfile

# 建立HDFS目錄
hadoop fs -mkdir /user/hadoop/dir1 /user/hadoop/dir2
hadoop fs -mkdir hdfs://nn1.example.com/user/hadoop/dir hdfs://nn2.example.com/user/hadoop/dir

# 查看HDFS目錄
hadoop fs -ls /user/hadoop/file1

# 查看HDFS文件內容
hadoop fs -cat hdfs://nn1.example.com/file1 hdfs://nn2.example.com/file2
hadoop fs -cat file:///file3 /user/hadoop/file4

# 修改HDFS文件全部者
hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]

# 修改HDFS文件權限
hadoop fs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI ...]

# 獲取HDFS到本地
hadoop fs -copyToLocal [-ignorecrc] [-crc] URI <localdst>

命令大全

https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/FileSystemShell.html

6.8. 常見問題

  • Name node is in safe mode

  • Hadoop啓動的時候首先進入安全模式,安全模式主要是爲了系統啓動的時候檢查各個DataNode上數據塊的有效性,根據策略必要的複製或者刪除部分數據塊,若是datanode丟失的block達到必定的比例會一直處於安全模式狀態即只讀狀態。能夠經過命令hadoop dfsadmin -safemode leave命令強制離開。

相關文章
相關標籤/搜索