欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

hadoop分布式環(huán)境搭建過程

 更新時(shí)間:2019年09月17日 11:22:07   作者:峻祁連  
這篇文章主要介紹了hadoop分布式環(huán)境搭建過程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

1. Java安裝與環(huán)境配置

Hadoop是基于Java的,所以首先需要安裝配置好java環(huán)境。從官網(wǎng)下載JDK,我用的是1.8版本。 在Mac下可以在終端下使用scp命令遠(yuǎn)程拷貝到虛擬機(jī)linux中。

danieldu@daniels-MacBook-Pro-857 ~/Downloads scp jdk-8u121-linux-x64.tar.gz root@hadoop100:/opt/software
root@hadoop100's password:
danieldu@daniels-MacBook-Pro-857 ~/Downloads 

其實(shí)我在Mac上裝了一個(gè)神器-Forklift。 可以通過SFTP的方式連接到遠(yuǎn)程linux。然后在操作本地電腦一樣,直接把文件拖過去就行了。而且好像配置文件的編輯,也可以不用在linux下用vi,直接在Mac下用sublime遠(yuǎn)程打開就可以編輯了 :)

然后在linux虛擬機(jī)中(ssh 登錄上去)解壓縮到/opt/modules目錄下

[root@hadoop100 include]# tar -zxvf /opt/software/jdk-8u121-linux-x64.tar.gz -C /opt/modules/

然后需要設(shè)置一下環(huán)境變量, 打開 /etc/profile, 添加JAVA_HOME并設(shè)置PATH用vi打開也行,或者如果你也安裝了類似forklift這樣的可以遠(yuǎn)程編輯文件的工具那更方便。

vi /etc/profile

按shift + G 跳到文件最后,按i切換到編輯模式,添加下面的內(nèi)容,主要路徑要搞對(duì)。

#JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.8.0_121
export PATH=$PATH:$JAVA_HOME/bin

按ESC , 然后 :wq存盤退出。

執(zhí)行下面的語句使更改生效

[root@hadoop100 include]# source /etc/profile

檢查java是否安裝成功。如果能看到版本信息就說明安裝成功了。

[root@hadoop100 include]# java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
[root@hadoop100 include]#

2. Hadoop安裝與環(huán)境配置

Hadoop的安裝也是只需要把hadoop的tar包拷貝到linux,解壓,設(shè)置環(huán)境變量.然后用之前做好的xsync腳本,把更新同步到集群中的其他機(jī)器。如果你不知道xcall、xsync怎么寫的。可以翻一下之前的文章。這樣集群里的所有機(jī)器就都設(shè)置好了。

[root@hadoop100 include]# tar -zxvf /opt/software/hadoop-2.7.3.tar.gz -C /opt/modules/
[root@hadoop100 include]# vi /etc/profile 繼續(xù)添加HADOOP_HOME
#JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.8.0_121
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOME
export HADOOP_HOME=/opt/modules/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
 
[root@hadoop100 include]# source /etc/profile
把更改同步到集群中的其他機(jī)器
[root@hadoop100 include]# xsync /etc/profile
[root@hadoop100 include]# xcall source /etc/profile
[root@hadoop100 include]# xsync hadoop-2.7.3/

3. Hadoop分布式配置

然后需要對(duì)Hadoop集群環(huán)境進(jìn)行配置。對(duì)于集群的資源配置是這樣安排的,當(dāng)然hadoop100顯得任務(wù)重了一點(diǎn) :)

編輯0/opt/modules/hadoop-2.7.3/etc/hadoop/mapred-env.sh、yarn-env.sh、hadoop-env.sh 這幾個(gè)shell文件中的JAVA_HOME,設(shè)置為真實(shí)的絕對(duì)路徑。

export JAVA_HOME=/opt/modules/jdk1.8.0_121 

打開編輯 /opt/modules/hadoop-2.7.3/etc/hadoop/core-site.xml, 內(nèi)容如下

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

 <property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/modules/hadoop-2.7.3/data/tmp</value>
 </property>
 
</configuration

編輯/opt/modules/hadoop-2.7.3/etc/hadoop/hdfs-site.xml, 指定讓dfs復(fù)制5份,因?yàn)槲疫@里有5臺(tái)虛擬機(jī)組成的集群。每臺(tái)機(jī)器都擔(dān)當(dāng)DataNode的角色。暫時(shí)也把secondary name node也放在hadoop100上,其實(shí)這里不太好,最好能和主namenode分開在不同機(jī)器上。

<configuration>
 <property>
  <name>dfs.replication</name>
  <value>5</value>
 </property>

 <property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>hadoop100:50090</value>
 </property>

 <property>
  <name>dfs.permissions</name>
  <value>false</value>
 </property>
</configuration>

YARN 是hadoop的集中資源管理服務(wù),放在hadoop100上。 編輯/opt/modules/hadoop-2.7.3/etc/hadoop/yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->

 <property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
 </property>


 <property>
  <name>yarn.resourcemanager.hostname</name>
  <value>hadoop100</value>
 </property>

 <property>
  <name>yarn.log-aggregation-enbale</name>
  <value>true</value>
 </property>

 <property>
  <name>yarn.log-aggregation.retain-seconds</name>
  <value>604800</value>
 </property>
</configuration>

為了讓集群能一次啟動(dòng),編輯slaves文件(/opt/modules/hadoop-2.7.3/etc/hadoop/slaves),把集群中的幾臺(tái)機(jī)器都加入到slave文件中,一臺(tái)占一行。

hadoop100
hadoop101
hadoop102
hadoop103
hadoop104

最后,在hadoop100上全部做完相關(guān)配置更改后,把相關(guān)的修改同步到集群中的其他機(jī)器

xsync hadoop-2.7.3/

在啟動(dòng)Hadoop之前需要format一下hadoop設(shè)置。

hdfs namenode -format 

然后就可以啟動(dòng)hadoop了。從下面的輸出過程可以看到整個(gè)集群從100到104的5臺(tái)機(jī)器都已經(jīng)啟動(dòng)起來了。通過jps可以查看當(dāng)前進(jìn)程。

[root@hadoop100 sbin]# ./start-dfs.sh
Starting namenodes on [hadoop100]
hadoop100: starting namenode, logging to /opt/modules/hadoop-2.7.3/logs/hadoop-root-namenode-hadoop100.out
hadoop101: starting datanode, logging to /opt/modules/hadoop-2.7.3/logs/hadoop-root-datanode-hadoop101.out
hadoop102: starting datanode, logging to /opt/modules/hadoop-2.7.3/logs/hadoop-root-datanode-hadoop102.out
hadoop100: starting datanode, logging to /opt/modules/hadoop-2.7.3/logs/hadoop-root-datanode-hadoop100.out
hadoop103: starting datanode, logging to /opt/modules/hadoop-2.7.3/logs/hadoop-root-datanode-hadoop103.out
hadoop104: starting datanode, logging to /opt/modules/hadoop-2.7.3/logs/hadoop-root-datanode-hadoop104.out
Starting secondary namenodes [hadoop100]
hadoop100: starting secondarynamenode, logging to /opt/modules/hadoop-2.7.3/logs/hadoop-root-secondarynamenode-hadoop100.out
[root@hadoop100 sbin]# jps
2945 NameNode
3187 SecondaryNameNode
3047 DataNode
3351 Jps
[root@hadoop100 sbin]# ./start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /opt/modules/hadoop-2.7.3/logs/yarn-root-resourcemanager-hadoop100.out
hadoop103: starting nodemanager, logging to /opt/modules/hadoop-2.7.3/logs/yarn-root-nodemanager-hadoop103.out
hadoop102: starting nodemanager, logging to /opt/modules/hadoop-2.7.3/logs/yarn-root-nodemanager-hadoop102.out
hadoop104: starting nodemanager, logging to /opt/modules/hadoop-2.7.3/logs/yarn-root-nodemanager-hadoop104.out
hadoop101: starting nodemanager, logging to /opt/modules/hadoop-2.7.3/logs/yarn-root-nodemanager-hadoop101.out
hadoop100: starting nodemanager, logging to /opt/modules/hadoop-2.7.3/logs/yarn-root-nodemanager-hadoop100.out
[root@hadoop100 sbin]# jps
3408 ResourceManager
2945 NameNode
3187 SecondaryNameNode
3669 Jps
3047 DataNode
3519 NodeManager
[root@hadoop100 sbin]#

4. Hadoop的使用

使用hadoop可以通過API調(diào)用,這里先看看使用命令調(diào)用,確保hadoop環(huán)境已經(jīng)正常運(yùn)行了。

 這中間有個(gè)小插曲,我通過下面的命令查看hdfs上面的文件時(shí),發(fā)現(xiàn)連接不上。

[root@hadoop100 ~]# hadoop fs -ls
ls: Call From hadoop100/192.168.56.100 to hadoop100:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused

后來發(fā)現(xiàn),是我中間更改過前面提到的xml配置文件,忘記format了。修改配置后記得要format。

hdfs namenode -format

hdfs 文件操作

[root@hadoop100 sbin]# hadoop fs -ls /
[root@hadoop100 sbin]# hadoop fs -put ~/anaconda-ks.cfg /
[root@hadoop100 sbin]# hadoop fs -ls /
Found 1 items
-rw-r--r-- 5 root supergroup  1233 2019-09-16 16:31 /anaconda-ks.cfg
[root@hadoop100 sbin]# hadoop fs -cat /anaconda-ks.cfg

文件內(nèi)容

[root@hadoop100 ~]# mkdir tmp
[root@hadoop100 ~]# hadoop fs -get /anaconda-ks.cfg ./tmp/
[root@hadoop100 ~]# ll tmp/
total 4
-rw-r--r--. 1 root root 1233 Sep 16 16:34 anaconda-ks.cfg

執(zhí)行MapReduce程序

hadoop中指向示例的MapReduce程序,wordcount,數(shù)數(shù)在一個(gè)文件中出現(xiàn)的詞的次數(shù),我隨便找了個(gè)anaconda-ks.cfg試了一下:

[root@hadoop100 ~]# hadoop jar /opt/modules/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /anaconda-ks.cfg ~/tmp
19/09/16 16:43:28 INFO client.RMProxy: Connecting to ResourceManager at hadoop100/192.168.56.100:8032
19/09/16 16:43:29 INFO input.FileInputFormat: Total input paths to process : 1
19/09/16 16:43:29 INFO mapreduce.JobSubmitter: number of splits:1
19/09/16 16:43:30 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1568622576365_0001
19/09/16 16:43:30 INFO impl.YarnClientImpl: Submitted application application_1568622576365_0001
19/09/16 16:43:31 INFO mapreduce.Job: The url to track the job: http://hadoop100:8088/proxy/application_1568622576365_0001/
19/09/16 16:43:31 INFO mapreduce.Job: Running job: job_1568622576365_0001
19/09/16 16:43:49 INFO mapreduce.Job: Job job_1568622576365_0001 running in uber mode : false
19/09/16 16:43:49 INFO mapreduce.Job: map 0% reduce 0%
19/09/16 16:43:58 INFO mapreduce.Job: map 100% reduce 0%
19/09/16 16:44:10 INFO mapreduce.Job: map 100% reduce 100%
19/09/16 16:44:11 INFO mapreduce.Job: Job job_1568622576365_0001 completed successfully
19/09/16 16:44:12 INFO mapreduce.Job: Counters: 49
File System Counters
FILE: Number of bytes read=1470
FILE: Number of bytes written=240535
FILE: Number of read operations=0
FILE: Number of large read operations=0
FILE: Number of write operations=0
HDFS: Number of bytes read=1335
HDFS: Number of bytes written=1129
HDFS: Number of read operations=6
HDFS: Number of large read operations=0
HDFS: Number of write operations=2
Job Counters
Launched map tasks=1
Launched reduce tasks=1
Rack-local map tasks=1
Total time spent by all maps in occupied slots (ms)=6932
Total time spent by all reduces in occupied slots (ms)=7991
Total time spent by all map tasks (ms)=6932
Total time spent by all reduce tasks (ms)=7991
Total vcore-milliseconds taken by all map tasks=6932
Total vcore-milliseconds taken by all reduce tasks=7991
Total megabyte-milliseconds taken by all map tasks=7098368
Total megabyte-milliseconds taken by all reduce tasks=8182784
Map-Reduce Framework
Map input records=46
Map output records=120
Map output bytes=1704
Map output materialized bytes=1470
Input split bytes=102
Combine input records=120
Combine output records=84
Reduce input groups=84
Reduce shuffle bytes=1470
Reduce input records=84
Reduce output records=84
Spilled Records=168
Shuffled Maps =1
Failed Shuffles=0
Merged Map outputs=1
GC time elapsed (ms)=169
CPU time spent (ms)=1440
Physical memory (bytes) snapshot=300003328
Virtual memory (bytes) snapshot=4159303680
Total committed heap usage (bytes)=141471744
Shuffle Errors
BAD_ID=0
CONNECTION=0
IO_ERROR=0
WRONG_LENGTH=0
WRONG_MAP=0
WRONG_REDUCE=0
File Input Format Counters
Bytes Read=1233
File Output Format Counters
Bytes Written=1129
[root@hadoop100 ~]#

在web端管理界面中可以看到對(duì)應(yīng)的application:

執(zhí)行的結(jié)果,看到就是“#” 出現(xiàn)的最多,出現(xiàn)了12次,這也難怪,里面好多都是注釋嘛。

[root@hadoop100 tmp]# hadoop fs -ls /root/tmp
Found 2 items
-rw-r--r-- 5 root supergroup   0 2019-09-16 16:44 /root/tmp/_SUCCESS
-rw-r--r-- 5 root supergroup  1129 2019-09-16 16:44 /root/tmp/part-r-00000
[root@hadoop100 tmp]# hadoop fs -cat /root/tmp/part-r-0000
cat: `/root/tmp/part-r-0000': No such file or directory
[root@hadoop100 tmp]# hadoop fs -cat /root/tmp/part-r-00000
# 12
#version=DEVEL 1
$6$JBLRSbsT070BPmiq$Of51A9N3Zjn/gZ23mLMlVs8vSEFL6ybkfJ1K1uJLAwumtkt1PaLcko1SSszN87FLlCRZsk143gLSV22Rv0zDr/ 1
%addon 1
%anaconda 1
%end 3
%packages 1
--addsupport=zh_CN.UTF-8 1
--boot-drive=sda 1
--bootproto=dhcp 1
--device=enp0s3 1
--disable 1
--disabled="chronyd" 1
--emptyok 1
。。。


通過web 界面可以查看hdfs中的文件列表 http://192.168.56.100:50070/explorer.html#

 hadoop還有好多好玩兒的東西,等待我去發(fā)現(xiàn)呢,過幾天再來更新。

總結(jié)

以上所述是小編給大家介紹的hadoop分布式環(huán)境搭建過程,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • Jmeter內(nèi)置變量vars和props的使用詳解

    Jmeter內(nèi)置變量vars和props的使用詳解

    JMeter是一個(gè)功能強(qiáng)大的負(fù)載測(cè)試工具,它提供了許多有用的內(nèi)置變量來支持測(cè)試過程,其中最常用的變量是 vars 和 props,本文通過代碼示例詳細(xì)給大家介紹了Jmeter內(nèi)置變量vars和props的使用,需要的朋友可以參考下
    2024-08-08
  • Hibernate之CRUD操作實(shí)踐

    Hibernate之CRUD操作實(shí)踐

    這篇文章主要介紹了Hibernate之CRUD操作實(shí)踐,本文主要告訴讀者Hibernate是什么,為什么要使用HibernateHibernate的優(yōu)缺點(diǎn),Hibernate的基礎(chǔ)實(shí)例應(yīng)用。需要的朋友可以參考下
    2018-11-11
  • Java結(jié)合uniapp實(shí)現(xiàn)驗(yàn)證碼功能的示例詳解

    Java結(jié)合uniapp實(shí)現(xiàn)驗(yàn)證碼功能的示例詳解

    UniApp 是一個(gè)基于 Vue.js 的跨平臺(tái)應(yīng)用開發(fā)框架,允許開發(fā)者使用統(tǒng)一的代碼庫來構(gòu)建多平臺(tái)應(yīng)用,這篇文章將給大家介紹Java結(jié)合uniapp實(shí)現(xiàn)驗(yàn)證碼功能,文中通過詳細(xì)的代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • SpringBoot實(shí)現(xiàn)全局異常的封裝和統(tǒng)一處理

    SpringBoot實(shí)現(xiàn)全局異常的封裝和統(tǒng)一處理

    在Spring Boot應(yīng)用中,全局異常的處理是一個(gè)非常重要的方面,本文主要為大家詳細(xì)介紹了如何在Spring Boot中進(jìn)行全局異常的封裝和統(tǒng)一處理,需要的可以參考下
    2023-12-12
  • Feign+mybatisplus搭建項(xiàng)目遇到的坑及解決

    Feign+mybatisplus搭建項(xiàng)目遇到的坑及解決

    這篇文章主要介紹了Feign+mybatisplus搭建項(xiàng)目遇到的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • java 線程鎖詳細(xì)介紹及實(shí)例代碼

    java 線程鎖詳細(xì)介紹及實(shí)例代碼

    這篇文章主要介紹了java 線程鎖詳細(xì)介紹及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • java導(dǎo)出包含多個(gè)sheet的Excel代碼示例

    java導(dǎo)出包含多個(gè)sheet的Excel代碼示例

    這篇文章主要介紹了java導(dǎo)出包含多個(gè)sheet的Excel,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 圖解Java經(jīng)典算法冒泡排序的原理與實(shí)現(xiàn)

    圖解Java經(jīng)典算法冒泡排序的原理與實(shí)現(xiàn)

    冒泡排序是一種簡單的排序算法,它也是一種穩(wěn)定排序算法。其實(shí)現(xiàn)原理是重復(fù)掃描待排序序列,并比較每一對(duì)相鄰的元素,當(dāng)該對(duì)元素順序不正確時(shí)進(jìn)行交換。一直重復(fù)這個(gè)過程,直到?jīng)]有任何兩個(gè)相鄰元素可以交換,就表明完成了排序
    2022-09-09
  • 一文搞懂Java的ThreadPoolExecutor原理

    一文搞懂Java的ThreadPoolExecutor原理

    都說經(jīng)典的就是好的,這句話放在Java的ThreadPoolExecutor上那是一點(diǎn)都沒錯(cuò),像現(xiàn)在數(shù)據(jù)庫連接的池化實(shí)現(xiàn),或者像Tomcat這種WEB服務(wù)器的線程管理,處處都有著ThreadPoolExecutor的影子,本篇文章將結(jié)合源碼實(shí)現(xiàn),對(duì)ThreadPoolExecutor的原理進(jìn)行一個(gè)深入學(xué)習(xí)
    2023-06-06
  • Java動(dòng)態(tài)修改配置即時(shí)生效的方式WatchService

    Java動(dòng)態(tài)修改配置即時(shí)生效的方式WatchService

    這篇文章給大家分享了Java動(dòng)態(tài)修改配置即時(shí)生效的方式WatchService的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友可以參考學(xué)習(xí)下。
    2018-06-06

最新評(píng)論