新聞中心
最近項目中在做千億大數(shù)據(jù)存儲檢索需求,要把10T的文本數(shù)據(jù)進行解析處理存入數(shù)據(jù)庫進行實時檢索,文件的存儲成為一個首要處理的問題,使用了多種存儲方式,都不是很滿足要求,最后使用 HDFS 分布式文件存儲系統(tǒng)發(fā)現(xiàn)效率、管理等各方面都挺不錯,就研究了一下搭建使用方式,特此記錄文檔

10余年的清水網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。網(wǎng)絡(luò)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整清水建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)公司從事“清水網(wǎng)站設(shè)計”,“清水網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。
環(huán)境
修改主機名
- # 按照上面環(huán)境配置修改每個機器的hostname
- vi /etc/hostname
- # 使用hostname命令使其生效,就不用重啟了
- hostname xxxx
修改hosts文件
- vi /etc/hosts
- 192.168.143.130 master
- 192.168.143.131 slave1
- 192.168.143.132 slave2
- 192.168.143.133 slave3
- 192.168.143.134 slave4
配置免密登錄
- ssh-keygen -t rsa
- ssh-copy-id -i ~/.ssh/id_rsa.pub master
- ssh-copy-id -i ~/.ssh/id_rsa.pub slave1
- ssh-copy-id -i ~/.ssh/id_rsa.pub slave2
- ssh-copy-id -i ~/.ssh/id_rsa.pub slave3
- ssh-copy-id -i ~/.ssh/id_rsa.pub slave4
安裝JDK(每臺機器)
- apt-get install -y openjdk-8-jre-headless openjdk-8-jdk
配置環(huán)境變量
在/etc/profile文件最后添加如下內(nèi)容:
- export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
- export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools/jar
- export HADOOP_HOME=/usr/hadoop-3.3.0/
- export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
- export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
- export HADOOP_COMMON_HOME=$HADOOP_HOME
- export HADOOP_HDFS_HOME=$HADOOP_HOME
- export HADOOP_MAPRED_HOME=$HADOOP_HOME
- export HADOOP_YARN_HOME=$HADOOP_HOME
- export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
- export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
使環(huán)境變量生效
- source /etc/profile
創(chuàng)建目錄(每天機器)
創(chuàng)建目錄的時候要注意,先通過df -h命令查看本機上的磁盤空間,確定好數(shù)據(jù)存儲的磁盤,然后創(chuàng)建以下三個目錄,在下面的配置文件hdfs-site.xml中修改對應(yīng)的目錄配置即可
- mkdir -p /home/hadoop/dfs/name
- mkdir -p /home/hadoop/dfs/data
- mkdir -p /home/hadoop/temp
安裝配置Hadoop
下載Hadoop安裝包
http://archive.apache.org/dist/hadoop/core/stable/hadoop-3.3.0.tar.gz
- # 解壓后拷貝到/usr目錄下
- tar -xzvf hadoop-3.3.0.tar.gz
- mv hadoop-3.3.0 /usr
配置Hadoop
配置文件在
/usr/hadoop-3.3.0/etc/hadoop目錄下
hadoop-env.sh
- export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
- export HDFS_NAMENODE_USER=root
- export HDFS_DATANODE_USER=root
- export HDFS_SECONDARYNAMENODE_USER=root
- export YARN_RESOURCEMANAGER_USER=root
- export YARN_NODEMANAGER_USER=root
core-site.xml
fs.defaultFS hdfs://master:9000 hadoop.http.staticuser.user root dfs.permissions.enabled false
hdfs-site.xml配置多個文件存儲目錄,使用逗號隔開即可
dfs.namenode.name.dir /home/hadoop/dfs/name dfs.dataname.data.dir /home/hadoop/dfs/data,/usr1/hadoop/dfs/data dfs.replication 2
mapred-site.xml
mapreduce.framework.name yarn
yarn-site.xml
yarn.resourcemanager.hostname master yarn.resourcemanager.webapp.address master:8088 yarn.nodemanager.aux-services mapreduce_shuffle
workers
這里配置的就是DataNode的存儲機器,不建議用master作為存儲,如果存滿了集群就不能用了
- slave1
- slave2
- slave3
- slave4
將master上的/usr/hadoop-3.3.9拷貝到其他機器即可
- scp /usr/hadoop-3.3.0 slave1:/usr
- scp /usr/hadoop-3.3.0 slave2:/usr
- scp /usr/hadoop-3.3.0 slave3:/usr
- scp /usr/hadoop-3.3.0 slave4:/usr
格式化HDFS目錄(在master機器)
- hdfs namenode-format
啟動Hadoop
在master機器上執(zhí)行就可以了,執(zhí)行完以后可以使用jps命令在所有機器上查看進程狀態(tài)
- cd /usr/hadoop-3.3.0/sbin
- ./start-all.sh
查看進程狀態(tài)
在master和slave上分別執(zhí)行jps命令
查看是否成功
在瀏覽器上打開下面的網(wǎng)頁,看能否正常訪問
- # Hadoop集群信息
- http://192.168.143.130:8088/cluster
- # HDFS地址
- http://192.168.143.130:9870/dfshealth.html
- # DataNode地址
- http://192.168.143.130:9864/datanode.html
- # NodeManager地址
- http://192.168.143.130:8042/node
- # SecondaryNameNode
- http://192.168.143.130:9868/status.html
測試文件上傳(master)
- hdfs dfs -mkdir /test
- hdfs dfs -put start-dfs.sh /test
HDFS操作命令
創(chuàng)建文件夾
- hdfs dfs -mkdir /myTask
創(chuàng)建多層文件
- hdfs dfs -mkdir -p /myTask/input
上傳文件
- hdfs dfs -put /opt/wordcount.txt /myTask
查看總目錄下的文件和文件夾
- hdfs dfs -ls /
查看myTask目錄下的wordcount.txt文件內(nèi)容
- hdfs dfs -cat /myTask/wordcount.txt
刪除文件或文件夾
- hdfs dfs -rm -r /myTask/wordcount.txt
下載文件到本地
- hdfs dfs -get /myTask/wordcount.txt /opt
Python操作hdfs
python操作hdfs時,如果要進行上傳下載文件,必須在執(zhí)行代碼的機器上配置hosts文件,原因是hdfs的namenode和datanode注冊后是以hostname進行記錄的,如果不配置直接進行上傳下載操作,那么將會采用hostname進行操作,因此需要在本機上配置hdfs集群機器IP和hostname的對應(yīng)配置。例如我在本機上進行操作,必須配置如下:
- C:\Windows\System32\drivers\etc\hosts
- 192.168.143.130 master
- 192.168.143.131 slave1
- 192.168.143.132 slave2
- 192.168.143.133 slave3
- 192.168.143.134 slave4
安裝庫
- pip install hdfs
操作
連接
- from hdfs.client import Client
- client = Client("http://192.168.143.130:9870")
創(chuàng)建目錄
- client.makedirs(hdfs_path)
刪除文件
- client.delete(hdfs_path)
上傳文件
- client.download(hdfs_path, local_path)
獲取目錄下文件列表
- client.list(hdfs_path)
總結(jié)
HDFS 文件存儲集群的優(yōu)點是:配置要求低、易于擴展、效率比較高、非常適合大批量文件存儲,而且可以提供 web 管理頁面,提供非常好的第三方庫。在進行 web 開發(fā)時,作為文件和圖片存儲庫也是非常好的選擇。
名稱欄目:Hadoop集群搭建及Python操作
本文來源:http://www.dlmjj.cn/article/dhpesco.html


咨詢
建站咨詢
