格式化以前先把tmp目錄下全部與Hadoop有關的信息所有刪除java
rm -rf /tmp/hadoop-centos*node
開啓以後jps只有Java的進程:sudo vi /etc/hosts 裏面加 bogonlinux
Root用戶 vi /etc/sudoersweb
/root n(查找下一個結果)shell
centos ALL=(ALL) NOPASSWD:ALLcentos
建立軟連接瀏覽器
ln –s /etc/sysconfig/network-scripts/ifcfg-ens33 ens33bash
修改配置文件服務器
vi /etc/sysconfig/network-scripts/ifcfg-ens33網絡
TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=51248a5b-aece-4777-ab51-7b5e61602180 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.12.206 NETMASK=255.255.255.0 GATEWAY=192.168.12.1 DNA1=219.141.136.10 DNS2=202.106.196.115 DNS3=8.8.8.8 DNS4=114.114.114.114 |
改完後重啓network服務
sudo systemctl restart network
虛擬機上右鍵-->設置-->網絡適配器-->橋接模式
檢測是否鏈接網絡 ping www.baidu.com
sudo vi /etc/hostname
原來內容所有刪除 寫入s126
重啓虛擬機
1.上傳文件包
2.解壓 tar –zxvf ****
3.建立軟連接 ln –s *** hadoop
tar -zxvf jdk-8u121-linux-x64.tar.gz
ln -s jdk1.8.0_121 java
rm -rf jdk-8u121-linux-x64.tar.gz
tar -zxvf hadoop-2.8.0.tar.gz
ln -s hadoop-2.8.0 hadoop
rm -rf hadoop-2.8.0.tar.gz
4.配置環境變量
sudo vi /etc/profile
#java
JAVA_HOME=/home/centos/java
export PATH=$PATH:$JAVA_HOME/bin
#hadoop
HADOOP_HOME=/home/centos/hadoop
Export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
vi ~/hadoop/etc/hadoop/hadoop-env.sh
#java
export JAVA_HOME=/home/centos/java
5.刷新配置文件
source /etc/profile
sudo systemctl stop firewalld關閉防火牆
sudo systemctl start firewalld開啓防火牆
sudo systemctl disable firewalld禁用防火牆(開機不啓動)
sudo systemctl enable firewalld使用防火牆(開機啓動)
sudo systemctl status firewalld查看防火牆狀態
一、 將hadoop的jar包上傳服務器
二、 解壓tar包
tar –zxvf ****
三、 建立軟鏈接
ln –s *** hadoop
四、 配置環境變量
[vi /etc/profile]
最下面加上
#hadoop
HADOOP_HOME=/home/centos/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
最後保存文件加載環境變量配置文件
source /etc/profile
五、 修改hadoop環境變量配置文件配置jdk路徑
[$HADOOP_HOME/etc/hadoop/hadoop-env.sh]
六、 測試
hadoop version
默認hadoop就是獨立模式。
特色:運行任務是一個java進程,就至關於運行一個java程序
修改hdfs配置文件
vi ~/hadoop/etc/hadoop/core-site.xml
cd ~/hadoop/etc/hadoop
[core-site.xml]
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.12.126:9000</value>
</property>
</configuration>
vi ~/hadoop/etc/hadoop/hdfs-site.xml
[hdfs-site.xml]
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
設置ssh免密登陸
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
檢測方式:ssh localhost/主機真實ip
格式化文件系統
hadoop namenode -format
啓動文件系統
jps 檢測Java開啓的進程
start-dfs.sh 啓動文件系統(啓動了三個java進程)
jps 再次檢測Java開啓的進程(應該是4個)
配置yarn資源管理器
cd ~/hadoop/etc/hadoop
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
vi yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
start-dfs.sh && start-yarn.sh && jps
配置/etc/hosts文件(本地靜態DNS)
首行加上 : bogon
增長:
192.168.12.201 s201
192.168.12.202 s202
192.168.12.203 s203
1.設置ssh免密登陸:
(如今別的主機ssh 主機IP 而後把宿主機複製過去的權限600)
效果:從主機上能經過ssh免密登陸
目的:在主機上經過ssh執行命令
設置的方式:
首先給主機設置ssh免密登陸,將主機的公鑰(id_rsa.pub)經過scp命令發送到其餘 主機,在其餘主機上將獲取到的公鑰追加到~/.ssh/authorized_keys。
主機:
ssh-keygen –t rsa –P '' –f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
scp ~/.ssh/id_rsa.pub centos@192.168.12.202:~/.ssh/id_rsa.pub.s201
scp ~/.ssh/id_rsa.pub centos@192.168.12.203:~/.ssh/id_rsa.pub.s201
s202:
s203:
cat ~/.ssh/id_rsa.pub.s201 >> ~/.ssh/authorized_keys
2.shell腳本的操做:
主機寫分發腳本cpTo,查看腳本xcall。賦予執行權限。移動到/usr/local/bin目錄下,以便咱們能在任何地方使用腳本
[cpTo]
#腳本的目的是:修改完了主機的文件之後,能夠經過它分發到其餘主機,實現同步
#腳本的用法:cpTo 文件(絕對路徑/相對路徑)
#!/bin/bash
#獲取參數的絕對路徑
dirname=`cd $(dirname $1); pwd`
basename=`basename $1`
echo ${dirname}/${basename}
for i in s202 s203
do
echo "=================$i ${dirname}/${basename}=================="
#若是其餘機器沒有父目錄建立父目錄
ssh $i mkdir -p ${dirname}
#遠程拷貝文件
scp $1 ${i}:${dirname}/${basename}
done
[xcall.sh]
#做用是經過ssh遠程運行命令,好比查看jps,在好比刪除/tmp
#用法:xcall 命令
#!/bin/bash
for host in s201 s202 s203
do
echo "====================echo $host $@==========================="
#ssh遠程執行命令
#$@獲取全部參數
#source /etc/profile 由於ssh遠程執行命令不去加載/etc/profile,因此不少命令無法用
ssh $host "source /etc/profile && $@"
Done
3.軟件安裝的操做
安裝jdk、hadoop、配置環境變量JAVA_HOME、HADOOP_HOME,能夠經過xcall腳原本 同步安裝
在主機上修改hosts文件,給主機配置全部機器的dns服務,使用cpTo腳本分發到其餘 機器,讓其餘機器也有dns服務
注意:/etc/hosts是root用戶的文件,因此須要切換到root執行
dns服務: 能夠將域名解析爲ip地址。好比ping s201,解析成ping 192.168.12.201
4.配置文件操做
在主機上修改hadoop的配置文件:
[Hadoop-en.sh] [core-site.xml] [hdfs-site.xml] [mapred-site.xml] [yarn-site.xml] [slaves]
經過cpTo腳本進行分發(能夠分發上一級目錄來所有分發)
一、[hadoop-env.sh]配置javahome
二、[core-site.xml]配置鏈接url
[core-site.xml]
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://s201:9000</value>
</property>
</configuration>
三、[hdfs-site.xml]配置的是副本數
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
四、[mapred-site.xml]配置運行map任務採用的集羣資源管理框架
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
五、[yarn-site.xml]配置RM的節點和數據傳輸方式
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>s126</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
六、[slaves]配置datanode節點和NM節點
s201
s202
s203
5.主機格式化文件系統
只須要在主機格式化文件系統(xcall刪除數據目錄/tmp/hadoop*,日誌文件/logs/*)
啓動hdfs文件系統和yarn框架
xcall查看啓動是否成功/看web
一、 將要統計的文件(wordcount.txt)上傳到hdfs
hdfs dfs –put 本地文件 hdfs目錄
hdfs dfs -put wordCount2.txt /user
二、 運行任務
hadoop jar jar包 com.zdjy.bigdata.wordCount.hadoop.WordCountApp hdfs輸 入文件
hdfs輸出目錄
hadoop jar wordCount.jar com.zdjy.WordCountApp /user/wordCount2.txt /saa
三、 查看結果
hdfs dfs –cat hdfs輸出目錄下的文本文件 (hdfs dfs -cat /saa/*)
4.關閉文件系統
hdfs dfs -mkdir /user
hdfs dfs -ls -R /
hdfs -dfs -put wordCount2.txt /user
hdfs dfs -put wordCount2.txt /user
hdfs dfs -ls -R /
hadoop jar wordCount-0.0.1-SNAPSHOT.jar
com.zdjy.bigdata.wordCount.hadoop.WordCountApp
/user/wordCount2.txt /out
hdfs dfs -cat /out/*
5.在瀏覽器上看web(sudo systemctl stop firewalld關閉防火牆)
文件系統:50070
yarn:8088
設置ssh免密登陸的緣由:咱們start-dfs.sh/start-yarn.sh他們都是經過ssh來遠程控制每一臺主機的進程的啓動
[start-dfs.sh]
if [ -n "$HADOOP_SECURE_DN_USER" ]; then
echo \
"Attempting to start secure cluster, skipping datanodes. " \
"Run start-secure-dns.sh as root to complete startup."
else
"$HADOOP_PREFIX/sbin/hadoop-daemons.sh" \
--config "$HADOOP_CONF_DIR" \
--script "$bin/hdfs" start datanode $dataStartOpt
fi
[Hadoop-daemons.sh]
exec "$bin/slaves.sh" --config $HADOOP_CONF_DIR cd "$HADOOP_PREFIX" \; "$bin/hadoop-daemon.sh" --config $HADOOP_CONF_DIR "$@"
[slaves.sh]
for slave in $SLAVE_NAMES ; do
ssh $HADOOP_SSH_OPTS $slave $"${@// /\\ }" \
2>&1 | sed "s/^/$slave: /" &
if [ "$HADOOP_SLAVE_SLEEP" != "" ]; then
sleep $HADOOP_SLAVE_SLEEP
fi
done
咱們手動啓動每個進程
主機啓動namenode
hadoop-daemon.sh start namenode
全部機器手動啓動datnode
hadoop-daemon.sh start datanode
在主機上手動啓動datanode
ssh s202 「source /etc/profile && hadoop-daemon.sh start datanode」
在主機上腳本啓動全部datanode
hadoop-daemons.sh start datanode
在主機啓動secondarynamenode
主機啓動resourcemanager
yarn-daemon.sh start resourcemanager
全部機器啓動nodemanager
yarn-daemon.sh start nodemanager
在主機啓動全部的nodemanager
yarn-daemons.sh start nodemanager
start-dfs.sh=NN,DNs,2NN
start-yarn.sh=RM,NMs
start-all.sh= start-dfs.sh && start-yarn.sh