自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Hadoop集群搭建及Python操作

開發(fā) 后端 Hadoop
HDFS 文件存儲集群的優(yōu)點是:配置要求低、易于擴展、效率比較高、非常適合大批量文件存儲,而且可以提供 web 管理頁面,提供非常好的第三方庫。在進行 web 開發(fā)時,作為文件和圖片存儲庫也是非常好的選擇。

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

環(huán)境

修改主機名

  1. # 按照上面環(huán)境配置修改每個機器的hostname 
  2. vi /etc/hostname 
  3.  
  4. # 使用hostname命令使其生效,就不用重啟了 
  5. hostname xxxx 

修改hosts文件

  1. vi /etc/hosts 
  2.  
  3. 192.168.143.130 master 
  4. 192.168.143.131 slave1 
  5. 192.168.143.132 slave2 
  6. 192.168.143.133 slave3 
  7. 192.168.143.134 slave4 

配置免密登錄

  1. ssh-keygen -t rsa 
  2.  
  3. ssh-copy-id -i ~/.ssh/id_rsa.pub master 
  4. ssh-copy-id -i ~/.ssh/id_rsa.pub slave1 
  5. ssh-copy-id -i ~/.ssh/id_rsa.pub slave2 
  6. ssh-copy-id -i ~/.ssh/id_rsa.pub slave3 
  7. ssh-copy-id -i ~/.ssh/id_rsa.pub slave4 

安裝JDK(每臺機器)

  1. apt-get install -y openjdk-8-jre-headless openjdk-8-jdk 

配置環(huán)境變量

在/etc/profile文件最后添加如下內容:

  1. export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 
  2. export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools/jar 
  3. export HADOOP_HOME=/usr/hadoop-3.3.0/ 
  4. export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin 
  5. export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop 
  6. export HADOOP_COMMON_HOME=$HADOOP_HOME 
  7. export HADOOP_HDFS_HOME=$HADOOP_HOME 
  8. export HADOOP_MAPRED_HOME=$HADOOP_HOME 
  9. export HADOOP_YARN_HOME=$HADOOP_HOME 
  10. export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native" 
  11. export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native 

使環(huán)境變量生效

  1. source /etc/profile 

創(chuàng)建目錄(每天機器)

創(chuàng)建目錄的時候要注意,先通過df -h命令查看本機上的磁盤空間,確定好數據存儲的磁盤,然后創(chuàng)建以下三個目錄,在下面的配置文件hdfs-site.xml中修改對應的目錄配置即可

  1. mkdir -p /home/hadoop/dfs/name 
  2. mkdir -p /home/hadoop/dfs/data 
  3. mkdir -p /home/hadoop/temp 

安裝配置Hadoop

下載Hadoop安裝包

http://archive.apache.org/dist/hadoop/core/stable/hadoop-3.3.0.tar.gz

  1. # 解壓后拷貝到/usr目錄下 
  2. tar -xzvf hadoop-3.3.0.tar.gz 
  3. mv hadoop-3.3.0 /usr 

配置Hadoop

配置文件在

/usr/hadoop-3.3.0/etc/hadoop目錄下

hadoop-env.sh

  1. export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 
  2. export HDFS_NAMENODE_USER=root 
  3. export HDFS_DATANODE_USER=root 
  4. export HDFS_SECONDARYNAMENODE_USER=root 
  5. export YARN_RESOURCEMANAGER_USER=root 
  6. export YARN_NODEMANAGER_USER=root 

core-site.xml

  1. <configuration> 
  2.   <property> 
  3.     <name>fs.defaultFS</name
  4.     <value>hdfs://master:9000</value> 
  5.   </property> 
  6.   <property> 
  7.     <name>hadoop.http.staticuser.user</name
  8.     <value>root</value> 
  9.   </property> 
  10.   <property> 
  11.     <name>dfs.permissions.enabled</name
  12.     <value>false</value> 
  13.   </property> 
  14. </configuration> 

hdfs-site.xml配置多個文件存儲目錄,使用逗號隔開即可

  1. <configuration> 
  2.   <property> 
  3.     <name>dfs.namenode.name.dir</name
  4.     <value>/home/hadoop/dfs/name</value> 
  5.   </property> 
  6.   <property> 
  7.     <name>dfs.dataname.data.dir</name
  8.     <value>/home/hadoop/dfs/data,/usr1/hadoop/dfs/data</value> 
  9.   </property> 
  10.   <property> 
  11.     <name>dfs.replication</name
  12.     <value>2</value> 
  13.   </property> 
  14. </configuration> 

mapred-site.xml

  1. <configuration> 
  2.   <property> 
  3.     <name>mapreduce.framework.name</name
  4.     <value>yarn</value> 
  5.   </property> 
  6. </configuration> 

yarn-site.xml

  1. <configuration> 
  2.   <property> 
  3.     <name>yarn.resourcemanager.hostname</name
  4.     <value>master</value> 
  5.   </property> 
  6.   <property> 
  7.     <name>yarn.resourcemanager.webapp.address</name
  8.     <value>master:8088</value> 
  9.   </property> 
  10.   <property> 
  11.     <name>yarn.nodemanager.aux-services</name
  12.     <value>mapreduce_shuffle</value> 
  13.   </property> 
  14. </configuration> 

 workers

這里配置的就是DataNode的存儲機器,不建議用master作為存儲,如果存滿了集群就不能用了

  1. slave1 
  2. slave2 
  3. slave3 
  4. slave4 

將master上的/usr/hadoop-3.3.9拷貝到其他機器即可

  1. scp /usr/hadoop-3.3.0 slave1:/usr 
  2. scp /usr/hadoop-3.3.0 slave2:/usr 
  3. scp /usr/hadoop-3.3.0 slave3:/usr 
  4. scp /usr/hadoop-3.3.0 slave4:/usr 

格式化HDFS目錄(在master機器)

  1. hdfs namenode-format 

啟動Hadoop

在master機器上執(zhí)行就可以了,執(zhí)行完以后可以使用jps命令在所有機器上查看進程狀態(tài)

  1. cd /usr/hadoop-3.3.0/sbin 
  2. ./start-all.sh 

查看進程狀態(tài)

在master和slave上分別執(zhí)行jps命令

查看是否成功

在瀏覽器上打開下面的網頁,看能否正常訪問

  1. # Hadoop集群信息 
  2. http://192.168.143.130:8088/cluster 
  3.  
  4. # HDFS地址 
  5. http://192.168.143.130:9870/dfshealth.html 
  6.  
  7. # DataNode地址 
  8. http://192.168.143.130:9864/datanode.html 
  9.  
  10. # NodeManager地址 
  11. http://192.168.143.130:8042/node 
  12.  
  13. # SecondaryNameNode 
  14. http://192.168.143.130:9868/status.html 

測試文件上傳(master)

  1. hdfs dfs -mkdir /test 
  2. hdfs dfs -put start-dfs.sh /test 

HDFS操作命令

創(chuàng)建文件夾

  1. hdfs dfs -mkdir /myTask 

創(chuàng)建多層文件

  1. hdfs dfs -mkdir -p /myTask/input 

上傳文件

  1. hdfs dfs -put /opt/wordcount.txt /myTask 

查看總目錄下的文件和文件夾

  1. hdfs dfs -ls / 

查看myTask目錄下的wordcount.txt文件內容

  1. hdfs dfs -cat /myTask/wordcount.txt 

刪除文件或文件夾

  1. hdfs dfs -rm -r /myTask/wordcount.txt 

下載文件到本地

  1. hdfs dfs -get /myTask/wordcount.txt /opt 

Python操作hdfs

python操作hdfs時,如果要進行上傳下載文件,必須在執(zhí)行代碼的機器上配置hosts文件,原因是hdfs的namenode和datanode注冊后是以hostname進行記錄的,如果不配置直接進行上傳下載操作,那么將會采用hostname進行操作,因此需要在本機上配置hdfs集群機器IP和hostname的對應配置。例如我在本機上進行操作,必須配置如下:

  1. C:\Windows\System32\drivers\etc\hosts 
  2.  
  3. 192.168.143.130 master 
  4. 192.168.143.131 slave1 
  5. 192.168.143.132 slave2 
  6. 192.168.143.133 slave3 
  7. 192.168.143.134 slave4 

安裝庫

  1. pip install hdfs 

操作

連接

  1. from hdfs.client import Client 
  2. client = Client("http://192.168.143.130:9870"

創(chuàng)建目錄

  1. client.makedirs(hdfs_path) 

刪除文件

  1. client.delete(hdfs_path) 

上傳文件

  1. client.download(hdfs_path, local_path) 

獲取目錄下文件列表

  1. client.list(hdfs_path) 

總結

HDFS 文件存儲集群的優(yōu)點是:配置要求低、易于擴展、效率比較高、非常適合大批量文件存儲,而且可以提供 web 管理頁面,提供非常好的第三方庫。在進行 web 開發(fā)時,作為文件和圖片存儲庫也是非常好的選擇。

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2016-10-27 09:37:10

Hadoop集群配置

2011-12-07 16:11:50

Hadoop集群搭建

2014-03-17 10:05:45

Hadoop集群

2010-06-03 19:02:31

Hadoop集群搭建

2010-06-04 18:17:50

Hadoop集群

2017-08-10 10:17:32

Hadoop分布式搭建

2010-06-04 18:06:22

Hadoop集群搭建

2012-11-01 17:15:04

2016-01-07 09:36:20

Docker容器

2020-04-21 22:59:50

Redis搭建選舉

2015-05-27 10:29:41

DockerHadoopHadoop集群

2012-09-13 13:26:40

Hadoop集群

2014-03-28 09:35:11

MongoDBSharding

2010-06-04 17:43:12

Hadoop集群搭建

2016-10-13 19:16:28

Python編程語言mysql

2017-10-25 18:25:40

Hadoop偽分布式環(huán)境部署

2017-05-11 17:36:50

2017-12-07 15:24:10

Hadoop大數據服務器

2011-07-19 13:20:22

Xcode

2010-05-24 14:59:29

Hadoop集群
點贊
收藏

51CTO技術棧公眾號