Hadoop安裝部署過程
------------
1、配置hosts
------------
#在文件末添加
vim /etc/hosts
...
192.169.1.1 hadoop1
...
192.168.43.128 hadoop1
---------------
2、實現(xiàn)本地免密
---------------
#生成秘鑰對(根據(jù)提示回車)
ssh-keygen
#將公鑰拷貝到免密節(jié)點
ssh-copy-id hadoop1
#驗證(ssh連接如果沒提示輸入密碼,則免密成功)
ssh hadoop1
如果提示22;則需要安裝ssh客戶端
apt install openssh-server
如果提示登陸被拒絕,則需要修改配置文件為yes
vim /etc/ssh/sshd_config
重啟ssh服務(wù)
service ssh restart
-----------------
3、解壓相關(guān)軟件包
-----------------
cd /opt
tar -zxvf jdk1.8.0_111.tar.gz
tar -zxvf hadoop-2.7.3.tar.gz
---------------
4、增加環(huán)境變量
---------------
#在文件末尾添加
vim /etc/profile
...
export JAVA_HOME=/opt/jdk1.8.0_111
export HADOOP_HOME=/opt/hadoop-2.7.3
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#使添加環(huán)境變量生效
source /etc/profile
#驗證
java -version
hadoop version
-------------
5、配置hadoop
-------------
cd hadoop-2.7.3/etc/hadoop
vim hadoop-env.sh
export JAVA_HOME=/opt/jdk1.8.0_111
將 slave 的主機名寫入到該文件(這里是單節(jié)點偽分布式所以只需要加入本機host)
vim slaves
hadoop1
vim core-site.xml
...
<configuration>
? <property>
? ? <name>fs.defaultFS</name>
? ? <value>hdfs://hadoop1:9000</value>
? </property>
<!-- 指定hadoop運行時產(chǎn)生文件的存儲目錄 -->
? <property>
? ? <name>hadoop.tmp.dir</name>
? ? <value>file:/usr/local/hadoop/tmp</value>
? ? <description>Abase for other temporary directories.</description>
? </property>
</configuration>
vim hdfs-site.xml
...
<configuration>
? <property>
? ? <name>dfs.namenode.http-address</name>
? ? ? <value>hadoop1:50070</value>
? </property>
? <property>
? ? <name>dfs.namenode.secondary.http-address</name>
? ? ? <value>hadoop1:50090</value>
? </property>
? <!-- 指定HDFS副本的數(shù)量 -->
? <property>
? ? <name>dfs.replication</name>
? ? ? <value>1</value>
? </property>
? <property>
? ? <name>dfs.namenode.name.dir</name>
? ? ? <value>file:/usr/local/hadoop/tmp/dfs/name</value>
? </property>
? <property>
? ? <name>dfs.datanode.data.dir</name>
? ? ? <value>file:/usr/local/hadoop/tmp/dfs/data</value>
? </property>
</configuration>
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
...
<!-- 指定mr運行在yarn上 -->
<configuration>
? <property>
? ? <name>mapreduce.framework.name</name>
? ? <value>yarn</value>
? </property>
? <property>
? ? <name>mapreduce.jobhistory.address</name>
? ? <value>hadoop1:10020</value>
? </property>
? <property>
? ? <name>mapreduce.jobhistory.webapp.address</name>
? ? <value>hadoop1:19888</value>
? </property>
</configuration>
vim yarn-site.xml
...
<configuration>
? <property>
? ? <name>yarn.resoursemanager.hostname</name>
? ? <value>hadoop1</value>
? </property>
<!-- reducer獲取數(shù)據(jù)的方式 -->
? <property>
? ? <name>yarn.nodemanager.aux-services</name>
? ? <value>mapreduce_shuffle</value>
? </property>
</configuration>
-------------
6、啟動hadoop
-------------
#注意:
如果以前啟動過hadoop,再次格式化,需要將
/usr/local/hadoop/tmp
/usr/local/hadoop/tmp/dfs/name
刪除掉,也可以直接刪除
/usr/local/hadoop 這個目錄,刪除命令為:
rm -rf /usr/local/hadoop/
#首次啟動需要先在master節(jié)點(這里的hadoop1)上執(zhí)行namenode的格式化操作,成功的話,會看到 "successfully formatted"和"Exitting with status 0"的提示,若為"Exitting with status 1"則是出錯。
hdfs namenode -format
#完成 Hadoop 格式化后,在namenode節(jié)點上啟動Hadoop各個服務(wù),使用jps命令驗證相關(guān)服務(wù)是否運行起來。
start-dfs.sh
jps
**************
58993 NameNode
59601 Jps
59459 SecondaryNameNode
59304 DataNode
**************
start-yarn.sh
jps
**************
58993 NameNode
59649 ResourceManager
59459 SecondaryNameNode
60070 Jps
59767 NodeManager
59304 DataNode
**************
mr-jobhistory-daemon.sh start historyserver
jps
**************
58993 NameNode
59649 ResourceManager
60147 Jps
59459 SecondaryNameNode
59767 NodeManager
59304 DataNode
60108 JobHistoryServer
**************
-------------
7、驗證hadoop
-------------
#另外還需要在Master節(jié)點(hadoop1)上通過命令
#查看DataNode是否正常啟動,如果Live datanode不為0,則說明集群啟動成功
HDFS管理界面(NameNode結(jié)點) http://hadoop1:50070
(SecondaryNameNode)? ? ? ? htpp://hadoop1:50090
MapReduce管理界面? ? ? ? ? http://hadoop1:8088
/opt/hadoop-2.7.3/logs/mapred-root-historyserver-hadoop3.out
------------------
hadoop平臺性能調(diào)優(yōu)
------------------
vim yarn-site.xml
...
? <property>
? ? <name>yarn.scheduler.maximum-allocation-mb</name>
? ? <value>1024</value>
? </property>
...
vim mapred-site.xml
...
? <property>
? ? <name>mapreduce.map.memory.mb</name>
? ? <value>2048</value>
? </property>
? <property>
? ? <name>mapreduce.map.java.opts</name>
? ? <value>-Xmx768m</value>
? </property>
? <property>
? ? <name>mapreduce.reduce.memory.mb</name>
? ? <value>2048</value>
? </property>
? <property>
? ? <name>mapreduce.reduce.java.opts</name>
? ? <value>–Xmx1536m</value>
? </property>
...
-------
8、實例
-------
#查看幫助命令
hdfs dfs -help
#創(chuàng)建一個數(shù)據(jù)導(dǎo)入文件夾
hdfs dfs -mkdir -p /data/input
-p:可以創(chuàng)建多級目錄
#在本地創(chuàng)建兩個文本,并加入有規(guī)律內(nèi)容
echo "hello world">test1.txt
echo "hello hadoop">test2.txt
#將文件上傳至hdfs上
hdfs dfs -put ./*.txt /data/input
#查看hdfs上的文件
hdfs dfs -ls /data/input/
#運行wordcunt(grep)方法進行計算
hadoop jar /opt/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /data/input/ output
#hadoop jar /opt/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep /data/input/ output 'hello'
#查看運行結(jié)果
hdfs dfs? -cat output/*
#將結(jié)果取回本地
hdfs dfs -get output ./output
#刪除hdfs上的文件或文件夾
hdfs dfs -rm -r output