Hadoop 理解與運用(一)

大數(shù)據(jù)的生態(tài)系統(tǒng)

1.存儲
  Hadoop hdfs
2.計算引擎
  map/reduce v1
  map/reduce v2(map/reduce on yarn)
Tez
spark
3.Impala Presto Drill 直接跑在hdfs上
pig(腳本方式)hive(SQL語言)跑在map/reduce上
hive on tez/sparkSQL
4.流式計算-storm
5.kv store cassandra mongodb hbase
6. Tensorflow Mahout
7.Zookeeper Protobuf
8. sqoop kafka flume.....
image.png

一、安裝Hadoop

(先在本機上安裝Hadoop ,解壓的即是安裝。)

1、安裝VirtualBox
2、安裝完成后新建虛擬機名稱為master
3、設(shè)定VirtualBox虛擬網(wǎng)卡的IP地址:
先設(shè)置虛擬機中的網(wǎng)絡(luò)設(shè)置
在虛擬機中選用host-only網(wǎng)絡(luò)模式
然后進入Linux界面進行IP地址配置:

vi /etc/sysconfig/network-sripts/ifcfg-enp0s3 
TYPE=Ethernet
IPADDR=192.168.56.100
NETMASK=255.255.255.0

修改Linux主機名:(主機名千萬不能有下劃線!)

hostnamectl set-hostname master

4、重啟網(wǎng)絡(luò)(使網(wǎng)卡生效)service network restart
互相ping,看是否測試成功,若不成功,注意防火墻的影響。關(guān)閉windows或虛擬機的防火墻。systemctl stop firewalld system disable firewalld
使用XShell登陸
檢查ssh服務(wù)狀態(tài)

systemctl status sshd (service sshd status)

5、驗證使用XShell是否能登陸成功。
將hadoop和jdk上傳到虛擬機(用xftp5上傳)
在Linux中安裝

JDK rpm -ivh ./xxxxx.jdk

6、驗證

rpm -qa | grep jdk

7、在命令行中敲java命令,確認jdk已經(jīng)安裝完成
(jdk默認安裝在/usr/java目錄下)
8、在Linux中安裝hadoop

cd /usr/local(到存放Hadoop目錄下準備解壓)
tar –xvf ./hadoop-2.7.2.tar.gz

9、把目錄修改為:

hadoop mv hadoop-2.7.2 hadoop(方便今后操作)

10、修改

hadoop-env.sh(配置Hadoop運行環(huán)境)
vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh

11、修改export JAVA_HOME (為了Java能夠找到執(zhí)行的命令)

 export JAVA_HOME=/usr/java/default

12、把/usr/hadoop/bin和/usr/hadoop/sbin設(shè)到PATH中

vi /etc/profile

追加

export PATH=$PATH:/usr/hadoop/bin:/usr/hadoop/sbin(為了能讓系統(tǒng)找到并使用Hadoop命令)
source etc/profile(讓配置文件生效)

測試hadoop命令是否可以直接執(zhí)行,任意目錄下敲hadoop
關(guān)閉master虛擬機并復(fù)制3份master虛擬機
分別修改3份虛擬機的ip和hostname,確認互相能夠ping通,用ssh登陸,同時修改所有虛擬機的/etc/hosts,確認使用名字可以ping通

二、Hadoop測試

1、下面搭建Hadoop集群
首先配置core-site文件

cd /usr/local/hadoop/etc/hadoop
vim core-site.xml(配置所有datanode的管理者信息)
<property>
      <name>fs.defaultFS</name>
      <value>hdfs://master:9000</value>
</property>

(然后將上面的配置文件分發(fā)到各個datanode,目的是讓各個datanode知道自己 的管理者是誰)
2、啟動集群
1)在master上啟動

hadoop-daemon.sh start namenode

2)在slave上啟動

hadoop-daemon.sh start datanode

3)用jps指令觀察執(zhí)行結(jié)果
4)用hdfs dfsadmin -report觀察集群配置情況
5)通過http://192.168.56.100:50070到web界面觀察集群運行情況
6)用hadoop-daemon.sh stop ...手工關(guān)閉集群
3、對集群進行集中管理(避免每次對每個機器進行手動啟動)
1)修改master上文件

vi /etc/hadoop/slaves
slave1
slave2
slave3

2)使用start-dfs.sh啟動集群,并觀察結(jié)果
3)使用stop-dfs.sh停止集群
4)配置免密SSH遠程登陸(此時需要密碼才能登陸)

ssh slave1
輸入密碼
exit
修改每次遠程登錄的密碼問題
cd
ls -la
cd .ssh
ssh-keygen -t rsa (四個回車)

會用rsa算法生成私鑰id_rsa和公鑰id_rsa.pub
(id_rsa 標志root的私鑰)
ssh-copy-id slave1/2/3
(把公鑰拷貝到slave上面,以后遠程登錄slave就用公鑰去解開root的私鑰)
再次ssh slave1
(此時已經(jīng)不再需要密碼)

5)重新使用start-dfs.sh啟動集群
5、修改windows機上C:\Windows\System32\drivers\etc\hosts文件,可以通過名字訪問集群web界面

192.168.56.100 master

6、使用hdfs dfs 或者hadoop fs命令對文件進行增刪改查的操作

1)hadoop fs -ls /       查看Hadoop根目錄下的文件
2)hadoop fs -put file /    把Linux本地的file文件丟到Hadoop的根目錄下 
3)hadoop fs -mkdir /dirname   在Hadoop下新建dirname目錄 
4)hadoop fs -text /filename        查看filename文件內(nèi)容
5)hadoop fs -rm /filename          刪除filename文件

7、通過網(wǎng)頁觀察文件情況
8、將hdfs-site.xml的replication值設(shè)為2,通過網(wǎng)頁觀察分塊情況

vi hdfs-site.xml
<property>
     <name>dfs.replication</name>
     <value>2</value>
</property>

9、設(shè)定dfs.namenode.heartbeat.recheck-interval為10000,然后停掉其中一臺slave,觀察自動復(fù)制情況
(服務(wù)器會默認5分鐘自動檢測機器的運行情況,如果一臺機器done掉,系統(tǒng)會讓其他機器去替代那個done掉的機器,把那個機器的文件備份到其他的機器上,這里把檢測的時間設(shè)置為10秒。)
10、啟動停掉的slave節(jié)點,通過網(wǎng)頁觀察datanode的動態(tài)添加
11、添加新的節(jié)點,體會hadoop的橫向擴展

1)啟動slave4,關(guān)閉防火墻,修改hostname
2)修改etc/hosts,加入對自己以及其他機器的解析,重啟網(wǎng)絡(luò)
3)在master中設(shè)定對于slave4的解析
4)啟動slave4的datanode,通過網(wǎng)頁進行觀察
5)hdfs dfsadmin –shutdownDatanode slave4:50020

(通過java程序訪問hdfs,就把HDFS集群當(dāng)成一個大的系統(tǒng)磁盤就行了!)
12、使用FileSystem類解決問題

                Configuration conf = new Configuration();
                conf.set("fs.defaultFS", "hdfs://192.168.56.100:9000");
                FileSystem fileSystem = FileSystem.get(conf);
                
                boolean b = fileSystem.exists(new Path("/hello"));
                System.out.println(b);
                
                boolean success = fileSystem.mkdirs(new Path("/mashibing"));
                System.out.println(success);
                
                success = fileSystem.delete(new Path("/mashibing"), true);
                System.out.println(success);
                
                FSDataOutputStream out = fileSystem.create(new Path("/test.data"), true);
                FileInputStream fis = new FileInputStream("c:/test/core-site.xml");
                IOUtils.copyBytes(fis, out, 4096, true);
                
                FileStatus[] statuses = fileSystem.listStatus(new Path("/"));
                //System.out.println(statuses.length);
                for(FileStatus status : statuses) {
                    System.out.println(status.getPath());
                    System.out.println(status.getPermission());
                    System.out.println(status.getReplication());
                }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 文/胡晨川我是Linux外行,hadoop外行,java更外行,Scala聽也沒聽過,在我腦海中,Spark一直只...
    老樹之見閱讀 6,013評論 3 39
  • 版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。 目錄-[-]1 先決條件2 實驗環(huán)境搭建 21 準備工...
    三三At你閱讀 939評論 0 3
  • 之前的有點忘記了,這里在云筆記拿出來再玩玩.看不懂的可以留言 大家可以嘗試下Ambari來配置Hadoop的相關(guān)環(huán)...
    HT_Jonson閱讀 3,198評論 0 50
  • 今天看到了你 比現(xiàn)在的自己年長幾歲 看起來很舒服,我喜歡的模樣 獨立,樂觀,智慧,健康,熱愛生活 就好像看到了未來...
    初始化吧閱讀 257評論 0 4
  • 是記憶醒了 不是夢 是感情的潮水 流淌在天地間 是毒草毒著柔腸 穿過生命的墻 是村落和村落之間 的炊煙飄蕩 是潔白...
    江城妖怪閱讀 263評論 0 0

友情鏈接更多精彩內(nèi)容