本文講述的是如何在CentOS 7中搭建Hadoop 2.7.3集群環(huán)境,并運(yùn)行一個(gè)wordcount例子
主要內(nèi)容:
- 1.集群規(guī)劃
- 2.創(chuàng)建用戶配置免登錄
- 3.安裝JDK
- 4.安裝Hadoop集群
- 5.運(yùn)行WordCount
相關(guān)文章:
1.VM12安裝配置CentOS7
2.Hadoop集群環(huán)境搭建(三臺(tái))
3.Hadoop之本地運(yùn)行WordCount
4.Hadoop之集群運(yùn)行WordCount
5.Log4j2+Flume+Hdfs日志采集
1.集群規(guī)劃
用戶 | 主機(jī)名 | ip | 安裝的軟件 | 進(jìn)程 |
---|---|---|---|---|
hadoop | hadoop1 | 192.168.2.111 | jdk、hadoop | namenode近迁、ressourcemanager |
hadoop | hadoop2 | 192.168.2.112 | jdk明肮、hadoop | datanode菱农、nodemanager、secondnamenode |
hadoop | hadoop3 | 192.168.2.113 | jdk柿估、hadoop | datanade循未、nodemanager |
首先我們有三臺(tái)IP為以上IP的虛擬機(jī),并改好主機(jī)名秫舌,如果你還沒(méi)有虛擬主機(jī)的妖,請(qǐng)參考:VM12安裝配置CentOS7 準(zhǔn)備好三臺(tái)虛擬主機(jī)。
2.創(chuàng)建用戶配置免登錄
給三臺(tái)主機(jī)都創(chuàng)建一個(gè)hadoop用戶用于運(yùn)行hadoop集群
2.1.創(chuàng)建專(zhuān)有的用戶(root用戶)
創(chuàng)建用戶和組(每臺(tái)主機(jī)都需要)
#先創(chuàng)建組cloud
groupadd cloud
#創(chuàng)建用戶并加入組cloud
useradd -g cloud hadoop
#修改用戶hadoop的密碼
passwd hadoop
將hadoop用戶加到sodu列表
#查看/etc/sudoers的權(quán)限
ls -l /etc/sudoers
可以看的是只讀權(quán)限足陨,如果我們要修改就必須先改變?cè)撐募臋?quán)限
#修改權(quán)限
chmod 777 /etc/sudoers
編輯/etc/sudoers加入hadoop用戶
vim /etc/sudoers
找到root用戶嫂粟,并加入hadoop用戶如下
#還原權(quán)限
chmod 440 /etc/sudoers
至此我們成功建立的hadoop用戶,并給hadoop用戶授予了root權(quán)限(注意三臺(tái)主機(jī)都需要執(zhí)行此操作)
2.2.建立主機(jī)名映射(root用戶)
將本機(jī)的主機(jī)名和IP建立映射關(guān)系(三臺(tái)主機(jī)都需要)
vi /etc/hosts
加入如下映射關(guān)系:
192.168.2.111 hadoop1
192.168.2.112 hadoop2
192.168.2.113 hadoop3
2.3.配置hadoop免密碼登錄(hadoop用戶)
切換hadoop用戶(namenode進(jìn)程所在的主機(jī)這里為hadoop1)
su hadoop
生成私鑰公鑰
cd ~
ssh-keygen -t rsa
接下來(lái)回車(chē)就ok墨缘,執(zhí)行完會(huì)在當(dāng)前文件夾生成.ssh文件夾
ls -la
將公鑰拷貝到其它機(jī)器上星虹,實(shí)現(xiàn)免密碼登錄
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3
其間輸入yes和主機(jī)的密碼,回車(chē)之后就可以測(cè)試免密碼登錄了
ssh hadoop2
可以看到不用輸密碼就可以登錄主機(jī)hadoop2了
3.安裝JDK
給三臺(tái)主機(jī)安裝jdk镊讼,這里只需要在hadoop1上安裝jdk宽涌,然后將軟件和環(huán)境變量拷貝到其它主機(jī)即可
3.1.創(chuàng)建文件夾(hadoop用戶)
在/opt/下創(chuàng)建soft-install文件夾來(lái)存放安裝的軟件,創(chuàng)建soft來(lái)安裝軟件
sudo mkdir soft-install
sudo mkdir soft
并將文件夾 /opt 權(quán)限賦值給 hadoop用戶
sudo chown -R hadoop:cloud /opt/*
3.2.上傳軟件到soft-install并安裝
tar -zxvf jdk-8u91-linux-x64.tar.gz -C /opt/soft/
修改環(huán)境變量
# 修改配置文件
sudo vi /etc/profile
# 在最后下添加
export JAVA_HOME=/opt/soft/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 刷新配置文件
source /etc/profile
測(cè)試java是否安裝成功
javac
出現(xiàn)以上信息蝶棋,說(shuō)明安裝成功
將安裝成功的jdk拷貝到其它主機(jī)
scp -r /opt/soft/jdk1.8.0_91 hadoop2:/opt/soft
scp -r /etc/soft/jdk1.8.0_91 hadoop3:/opt/soft
復(fù)制/etc/profile (記得要三臺(tái)主機(jī)刷新環(huán)境變量)
···
sudo scp /etc/profile hadoop2:/etc/
sudo scp /etc/profile hadoop3:/etc/
···
4.安裝Hadoop(hadoop用戶)
解壓
tar -zxvf hadoop-2.7.3.tar.gz -C /opt/soft/
刪除docs
cd /opt/soft/hadoop-2.7.3/share
rm -rf doc/
修改環(huán)境變量
# 修改配置文件
sudo vi /etc/profile
# 在最后下添加
export HADOOP_HOME=/opt/soft/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin
# 刷新配置文件
source /etc/profile
修改配置文件
這些配置文件全部位于 /opt/soft/hadoop-2.7.3/etc/hadoop 文件夾下
hadoop-env.sh
export JAVA_HOME=/opt/soft/jdk1.8.0_91
core-site.xml
<configuration>
<!-- 指定HDFS老大(namenode)的通信地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<!-- 指定hadoop運(yùn)行時(shí)產(chǎn)生文件的存儲(chǔ)路徑 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/soft/hadoop-2.7.3/tmp</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<!-- 設(shè)置namenode的http通訊地址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop1:50070</value>
</property>
<!-- 設(shè)置secondarynamenode的http通訊地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop2:50090</value>
</property>
<!-- 設(shè)置namenode存放的路徑 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/soft/hadoop-2.7.3/name</value>
</property>
<!-- 設(shè)置hdfs副本數(shù)量 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 設(shè)置datanode存放的路徑 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/soft/hadoop-2.7.3/data</value>
</property>
</configuration>
mapred-site.xml
必須先
mv mapred-site.xml.template mapred-site.xml
<configuration>
<!-- 通知框架MR使用YARN -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<!-- 設(shè)置 resourcemanager 在哪個(gè)節(jié)點(diǎn)-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
<!-- reducer取數(shù)據(jù)的方式是mapreduce_shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
masters
新建一個(gè)masters的文件,這里指定的是secondary namenode 的主機(jī)
hadoop2
slaves
hadoop2
hadoop3
創(chuàng)建文件夾:
cd /opt/soft/hadoop-2.7.3/
mkdir tmp name data
復(fù)制/opt/soft (注意hadoop2卸亮、hadoop3上soft目錄的權(quán)限為hadoop:cloud一致)
scp -r /opt/soft/hadoop-2.7.3 hadoop2:/opt/soft
scp -r /opt/soft/hadoop-2.7.3 hadoop3:/opt/soft
復(fù)制/etc/profile (記得要三臺(tái)主機(jī)刷新環(huán)境變量)
sudo scp /etc/profile hadoop2:/etc/
sudo scp /etc/profile hadoop3:/etc/
五、運(yùn)行WordCount
1玩裙、啟動(dòng)
第一次啟動(dòng)得格式化嫡良,用hadoop用戶在hadoop1主機(jī)執(zhí)行命令(沒(méi)報(bào)錯(cuò)就下一步)
./bin/hdfs namenode -format
啟動(dòng)dfs
./sbin/start-dfs.sh
啟動(dòng)yarn
./sbin/start-yarn.sh
查看啟動(dòng)的進(jìn)程
可以看到各主機(jī)上的進(jìn)程和我們規(guī)劃的一樣,說(shuō)明安裝成功献酗。
瀏覽器測(cè)試hdfs
http://192.168.2.111:50070
瀏覽器測(cè)試yarn
http://192.168.2.111:8088/cluster/nodes
2、運(yùn)行wordcount
創(chuàng)建words.txt文件
hello world
hello java
hello python
java home
上傳至hdfs
bin/hadoop fs -put words.txt /
查看是否上傳成功
bin/hadoop fs -ls /
也可以通過(guò)瀏覽器查看
運(yùn)行wordcount
./bin/hadoop jar /opt/soft/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount hdfs://hadoop1:9000/words.txt hdfs://hadoop1:9000/out
查看運(yùn)行結(jié)果
bin/hadoop fs -cat /out/part-r-00000
當(dāng)然也可以通過(guò)web界面下載查看坷牛,需要在windows的C:\Windows\System32\drivers\etc\hosts加入hadoop主機(jī)映射關(guān)系