最近在學習大數據,需要安裝hadoop,自己弄了好久,最后終於弄好了。網上也有很多文章關於安裝hadoop的,但總會遇到一些問題,所以把整個過程記錄下來,有什么不對的地方大家可以留言更正。
一、ssh免密登錄
1、測試是否能免密登錄
# ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
2、設置免密登錄
1)、去掉 /etc/ssh/sshd_config中的兩行注釋,如沒有則添加,所有服務器都要設置的:
#RSAAuthentication yes
#PubkeyAuthentication yes
2)、生成秘鑰:
# ssh-keygen -t rsa
備注:輸入命令后回車4次
3)、復制到公共密鑰中:
# cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
4)、將秘鑰復制到目標服務器:
# ssh-copy-id 目標服務器IP
5)、測試:(沒有報錯,並沒有提示輸入目標服務器用戶密碼,用戶切換到目標服務器用戶名則成功)
# ssh 目標服務器IP
備注:配置好了hadoop1到hadoop2免密登錄,同時需要配置hadoop2到hadoop1的免密登錄,在hadoop2上操作,過程同上
二、安裝JDK
hadoop-3.0.0需要jdk1.8,此處省略安裝過程,網上很多,過程也比較簡單
三、安裝hadoop
1、下載hadoop:
http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-3.0.0/
2、解壓安裝:
1)、復制 hadoop-3.0.0.tar.gz 到/usr/hadoop目錄下, 然后
#tar -xzvf hadoop-3.0.0.tar.gz
解壓,解壓后目錄為:/usr/hadoop/hadoop-3.0.0,Hadoop 解壓后即可使用。輸入如下命令來檢查 Hadoop 是否可用,成功則會顯示 Hadoop 版本信息:
#cd /usr/hadoop/hadoop-3.0.0 #./bin/hadoop version
2),在/usr/hadoop/目錄下,建立tmp:
#mkdir /usr/hadoop/tmp
3)、設置環境變量:
#vi /etc/profile
# set hadoop path
export HADOOP_HOME=/usr/hadoop/hadoop-3.0.0
export PATH=$PATH:$HADOOP_HOME/bin
4)、使環境變量生效,終端中運行如下命令:
#source /etc/profile
5)、設置hadoop:
一共需要配置主要的6個文件:
hadoop-3.0.0/etc/hadoop/hadoop-env.sh
hadoop-3.0.0/etc/hadoop/yarn-env.sh
hadoop-3.0.0/etc/hadoop/core-site.xml
hadoop-3.0.0/etc/hadoop/hdfs-site.xml
hadoop-3.0.0/etc/hadoop/mapred-site.xml
hadoop-3.0.0/etc/hadoop/yarn-site.xml
⑴、配置hadoop-env.sh:
# The java implementation to use. #export JAVA_HOME=${JAVA_HOME} export JAVA_HOME=/usr/java/jdk1.8.0_152 //根據自己jdk安裝目錄配置
⑵、配置yarn-env.sh:
#The java implementation to usr export JAVA_HOME=/usr/java/jdk1.8.0_152 //根據自己jdk安裝目錄配置
⑶、配置core-site.xml:
<!-- 指定HADOOP所使用的文件系統schema(URI),HDFS的老大(NameNode)的地址 -->
<configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> <description>HDFS的URI,文件系統://namenode標識:端口號</description> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/hadoop/tmp</value> <description>namenode上本地的hadoop臨時文件夾</description> </property> </configuration>
⑷、配置hdfs-site.xml:
<configuration>
<!—hdfs-site.xml-->
<property>
<name>dfs.replication</name>
<value>1</value>
<description>副本個數,配置默認是3,應小於datanode機器數量</description>
</property>
</configuration>
⑸、配置mapred-site.xml:
<!-- 指定mr運行在yarn上 -->
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
⑹、配置yarn-site.xml:
<!-- 指定YARN的老大(ResourceManager)的地址 -->
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
<!-- reducer獲取數據的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
備注:以上配置都是以最簡配置,還有很多配置可以自行添加
6)、將/usr/hadoop復制到其他服務器:
scp -r /usr/hadoop root@192.168.1.11:/usr/hadoop
7)、格式化namenode:
#CD /usr/hadoop/hadoop-3.0.0 # ./bin/hdfs namenode -format
成功的話,會看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若為 “Exitting with status 1” 則是出錯
備注:只需格式化namenode,datanode不需要格式化(若格式化了,可將/usr/hadoop/tmp目錄下文件都刪除),所以先將安裝文件夾復制到其他服務器,再格式化
四、測試:
1、啟動HDFS:
#CD /usr/hadoop/hadoop-3.0.0 # sbin/start-dfs.sh
如果運行腳本報如下錯誤,
ERROR: Attempting to launch hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting launch.
Starting datanodes
ERROR: Attempting to launch hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting launch.
Starting secondary namenodes [localhost.localdomain]
ERROR: Attempting to launch hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting launch.
解決方案
(缺少用戶定義而造成的)因此編輯啟動和關閉
$ vim sbin/start-dfs.sh
$ vim sbin/stop-dfs.sh
頂部空白處添加
HDFS_DATANODE_USER=root HADOOP_SECURE_DN_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root
2)啟動ResourceManager和NodeManager:
#CD /usr/hadoop/hadoop-3.0.0 #sbin/start-yarn.sh
如果啟動時報如下錯誤,
Starting resourcemanager
ERROR: Attempting to launch yarn resourcemanager as root
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting launch.
解決方案
(也是由於缺少用戶定義)
是因為缺少用戶定義造成的,所以分別編輯開始和關閉腳本
$ vim sbin/start-yarn.sh
$ vim sbin/stop-yarn.sh
頂部空白添加
YARN_RESOURCEMANAGER_USER=root HADOOP_SECURE_DN_USER=yarn YARN_NODEMANAGER_USER=root
3)、啟動驗證:
執行jps命令,出現下圖基本完成
備注:也可以使用下面命令同時啟動HDFS和ResourceManager、NodeManager:
#CD /usr/hadoop/hadoop-3.0.0 #sbin/start-all.sh