Hadoop入坑之路(一)


入坑准備

  在開始學習Hadoop之前需要提前准備幾個服務器。我在虛擬機上提前准備了4個Centos_7 64位的操作系統。並需要完成一下配置:

網絡配置:

  1.修改主機名

  2.設置映射關系

[root@master ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

222.18.157.50 hdp-master
222.18.157.51 hdp-slaver1
222.18.157.52 hdp-slaver2
222.18.157.53 hdp-slaver3

  3.修改IP地址

[root@master ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
DEVICE=ens33
ONBOOT=yes

# ipaddr gateway netmask dns

IPADDR=222.18.157.50
GATEWAY=222.18.157.2
NETMASK=255.255.255.0
DNS1=114.114.114.114
DNS2=8.8.8.8

  

免密登陸設置:

  在整個學習過程中,將hdp-master(222.18.157.50)設置為主機。hdp-slaver1(222.18.157.51)、hdp-slaver2(222.18.157.52)、hdp-slaver3(222.18.157.53)設置為從機。

  在整個過程中,為了方便主機對從機的管理,需要進行免密登陸配置。

[root@hdp-master ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:kJEWZWy/U0INFpu5C58hcpPeeKLyeearUfUUK7JffQ0 root@hdp-master
The key's randomart image is:
+---[RSA 2048]----+
|      o=o ++.    |
|      o+o..+.o   |
|     .o..o* o E  |
|       . =o=.. ..|
|      . S o+o . o|
|       = Oo=   . |
|      . + B.     |
|    .  +oo       |
|     o==o.       |
+----[SHA256]-----+

  可以發現目錄中多了一個.ssh隱藏文件,進入可以查看已經生成了相應的公鑰和私鑰文件。

[root@hdp-master ~]# cd .ssh/
[root@hdp-master .ssh]# ll
總用量 8
-rw-------. 1 root root 1679 9月  10 21:26 id_rsa
-rw-r--r--. 1 root root  397 9月  10 21:26 id_rsa.pub

  將公鑰文件拷貝到從機上即可。

[root@hdp-master .ssh]# ssh-copy-id root@hdp-slaver1
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@hdp-slaver1's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@hdp-slaver1'"
and check to make sure that only the key(s) you wanted were added.

  這樣hdp-master的公鑰就成功的拷貝到了從機hdp-slaver1上。注意,免密登陸是單向的。

 

JDK安裝:

  由於Hadoop是用Java開發的,所以在正式安裝Hadoop之前還需要安裝JDK,點擊這里下載JDK從官網上下載JDK的Linux版本的.tar.gz壓縮包並解壓。

  將JDK添加到環境變量中,打開/etc/profile文件,並在最后添加以下代碼:

export JAVA_HOME=/root/learn_hadoop/jdk
export PATH=.:$PATH:$JAVA_HOME/bin

  再執行source /etc/profile命令,使修改后的配置文件生效。可以執行以下命令查看Java的版本:

[root@hdp-master learn_hadoop]# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

 

 

Hadoop安裝

  經過了上述繁瑣的准備之后,現在開始正式安裝hadoop了。同樣需要從Hadoop官方網站上下載安裝包。在這里我下載的Hadoop版本是3.1.1,將下載后的安裝包解壓。

環境變量配置:

  打開/etc/profile文件並添加下列代碼並執行source /etc/profile代碼:

export HADOOP_HOME=/root/learn_hadoop/hdp
export PATH=.:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

修改core-site.xml

  在/root/learn_hadoop/hdp/etc/hadoop路徑下修改core-site.xml配置文件:

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://222.18.157.50:9000</value>
</property>
</configuration>

修改hdfs-site.xml

  在/root/learn_hadoop/hdp/etc/hadoop路徑下修改hdfs-site.xml配置文件:

<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/root/dfs/name</value>
</property>

<property>
<name>dfs.datanode.data.dir</name>
<value>/root/dfs/data</value>
</property>
</configuration> 

  在Hadoop安裝過程中的一些基本配置已經完成,為了避免在從機中進行相同的操作,只需要將主機中的包拷貝到從機中即可。

 

 

HDFS客戶端的操作

  HDFS客戶端有多種形式:

    1.網頁模式

    2.命令行模式

  客戶端在那里運行並沒有約束,只要運行客戶端的機器能夠和HDFS集群連網就行。

 

  文件的切塊大小和存儲的副本數量,都是由客戶端決定!

  所謂的由客戶端決定,是通過配置參數來定的。HDFS的客戶端會讀以下兩個參數,來決定切塊大小、副本數量:

    切塊大小的參數: dfs.blocksize

    副本數量的參數: dfs.replication

 

啟動HDFS

  在第一次啟動HDFS前需要初始化namenode的元數據目錄。(這一步非常重要!!!

hadoop namenode -format

  然后在hdp-master主機上啟用namenode的進程

hdfs --daemon start namenode

  在windows中用瀏覽器訪問namenode提供的web端口:9870即可。

hdfs://222.18.157.50:9870

  最后就可以啟動集群中的datanode

hdfs --daemon start datanode

 

  自動啟動Hadoop集群

  1.  配置在目錄 $HADOOP_HOME/etc/hadoop/ 下的 workers文件。將需要統一啟動的集群主機名寫入文件。

  2.  配置在目錄 $HADOOP_HOME/sbin/ 下的文件 start-dfs.sh 和 stop-dfs.sh:

  分別在文件前面寫入下列語句:

 

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

 

  3.  配置在目錄 $HADOOP_HOME/sbin/ 下的文件 start-yarn.sh 和 stop-yarn.sh:

  分別在文件前邊寫入下列語句:

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

  配置完成后就可以在Linux終端執行 start ,stop 語句,實現自動啟動集群功能。

 

 

 

HDFS客戶端命令行操作命令

  查看hdfs中的目錄信息  

    hadoop fs -ls /hdfs路徑 

  上傳文件到hdfs中

    hadoop fs -put /本地文件  /aaa

    hadoop fs -copyFromLocal /本地文件  /hdfs路徑   ##  copyFromLocal等價於 put 

    hadoop fs -moveFromLocal /本地文件  /hdfs路徑  ## 跟copyFromLocal的區別是:從本地移動到hdfs中 

  下載文件到客戶端本地磁盤

    hadoop fs -get /hdfs中的路徑   /本地磁盤目錄

    hadoop fs -copyToLocal /hdfs中的路徑 /本地磁盤路徑   ## 跟get等價

    hadoop fs -moveToLocal /hdfs路徑  /本地路徑  ## 從hdfs中移動到本地  

  在hdfs中創建文件夾

        hadoop fs -mkdir  -p /aaa/xxx        

  移動hdfs中的文件(更名)

    hadoop fs -mv /hdfs的路徑  /hdfs的另一個路徑

  刪除hdfs中的文件或文件夾

    hadoop fs -rm -r /aaa 

  修改文件的權限

    hadoop fs -chown user:group /aaa

    hadoop fs -chmod 700 /aaa 

  追加內容到已存在的文件

    hadoop fs -appendToFile /本地文件   /hdfs中的文件 

  顯示文本文件的內容

    hadoop fs -cat /hdfs中的文件

    hadoop fs -tail /hdfs中的文件

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM