一、下載
1、hadoop官網下載:https://archive.apache.org/dist/hadoop/common/
進入stable文件夾里下載,這是穩定版本。
stable/
本文的版本是?hadoop-2.7.2.tar.gz?
2、jdk下載,JDK7及以上,本文用jdk8-64位
二、版本區別
2.5之前的版本,hadoop官網提供的都是32位編譯的安裝包。我們環境都是Linux64位的,需要用64位機子重新編譯。
從2.5版本起,hadoop提供的都是64位編譯的安裝包,32位用不了。64位hadoop需要64位JDK7.0及以上和64位Linux。
-------在已安裝了Linux 64位,下載了JDK8x64,HADOOPx64的環境下開始-------
三、添加用戶hadoop
1、添加用戶
首先以root登錄Linux。用adduser命令添加一個普通用戶,命令如下:
#adduser hadoop//添加一個名為hadoop的用戶,該用戶隨意取#passwd hadoop //修改密碼Changing password for user hadoop.New UNIX password: //在這里輸入新密碼Retype new UNIX password: //再次輸入新密碼passwd: all authentication tokens updated successfully.
2、賦予hadoop,root權限
方法一:
修改 /etc/sudoers 文件,找到下面一行,把前面的注釋(#)去掉
## Allows people in group wheel to run all commands
%wheel ? ?ALL=(ALL) ? ?ALL
然后修改用戶,使其屬于root組(wheel),命令如下:
#usermod -g root hadoop
修改完畢,用hadoop帳號登錄,用命令 sudo ,即可獲得root權限進行操作。
--------------------------------------
方法二:
修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root ? ?ALL=(ALL) ? ? ALL
hadoopALL=(ALL) ? ? ALL
修改完畢,用hadoop帳號登錄,用命令 sudo ,即可獲得root權限進行操作。
四、修改主機名
hadoop登錄
? sudo vim /etc/sysconfig/network
? ? ? ? NETWORKING=yes
? ? ? ? HOSTNAME=hello110 ? ?###
? sudo hostname hello110 讓修改生效,無需重啟。
(修改了/etc/sysconfig/network必須重啟才生效。hostname hello110是只對當前狀態有效,一旦重新啟動虛擬機,主機名未變。)
五、修改主機名和IP的映射關系
? ? ? ? vim /etc/hosts
192.168.255.128(本機linuxIP地址) ? ?hello110
六、關閉防火墻
#查看防火墻狀態
? ? ? ? service iptables status
? ? ? ? #關閉防火墻
? ? ? ? service iptables stop
? ? ? ? #查看防火墻開機啟動狀態
? ? ? ? chkconfig iptables --list
? ? ? ? #關閉防火墻開機啟動
? ? ? ? chkconfig iptables off
hadoop是公司內部使用,在公司內部網絡,不與外網通,所以直接關掉防火墻好了,省的一個個去關閉hadoop的端口。
七、安裝JDK
1、上傳jdk安裝包
alt+p?后出現sftp窗口,然后命令:put? windows上jdk安裝包的路徑\jdk安裝包全名。上傳到執行命令時hadoop用戶所在的文件下。
2、解壓jdk
????????#創建文件夾
????????mkdir?/home/hadoop/app
????????#解壓
????????tar?-zxvf ?jdk-8u73-linux-x64.tar.gz?-C?/home/hadoop/app
3、將java添加到環境變量中
????????sudo?vim?/etc/profile
????????#在文件最后添加
????????export?JAVA_HOME=/home/hadoop/app/jdk-8u73
????????export?PATH=$PATH:$JAVA_HOME/bin
4、 刷新配置
????????source?/etc/profile
八、安裝hadoop
1、上傳hadoop
tar?-zxvf hadoop的壓縮包?-C?/home/hadoop/app
2、配置hadoop
hadoop2.x的配置文件$HADOOP_HOME/etc/hadoop需要修改5個配置文件
????第一個:hadoop-env.sh
????????vim?hadoop-env.sh
????????#第27行
????????export?JAVA_HOME=/usr/java/jdk1.7.0_65
#?The?java?implementation?to?use.
#export?JAVA_HOME=${JAVA_HOME}?sometime?can?not?get.zengmg 這個${JAVA_HOME}有時候會拿不到,所以配置成固定的
export?JAVA_HOME=/home/hadoop/app/jdk1.8.0_73/
不要配置成?/home/hadoop/app/jdk1.8.0_73/bin 了
----------------------------------------------------------------------------
????第二個:core-site.xml
????????<!--?指定HADOOP所使用的文件系統schema(URI),HDFS的老大(NameNode)的地址?-->
????????<property>
????????????<name>fs.defaultFS</name>
????????????<value>hdfs://hello110:9000/</value>
</property>
這里最后的/ 可有可無,但是最好有。
<!--?指定hadoop運行時產生文件的存儲目錄
hadoop公共進程在運行的時候會產生一些數據,這些數據需要目錄來存放。
我們可以籠統地配置一個,讓Namenote,Datanote自己去在這個文件夾下建子文件夾
但是生產上Namenote單獨對一個目錄,Datanote單獨對一個目錄,而且這個目錄是單獨磁盤掛載點,方便擴容
?-->
? ? ? ??
? ? <property>
????????????<name>hadoop.tmp.dir</name>
????????????<value>/home/hadoop/hadoop-2.4.1/tmp</value>
? ? ? ? ? ?<!--這里的tmp文件要手動創建,并且賦予全部權限 ?chmod 777 ?文件名
該文件用于保存NameNode的數據-->
????</property>
---------------------------------------------------------------------------------------------------
????第三個:hdfs-site.xml???hdfs-default.xml?
????????<!--?指定HDFS副本的數量?-->
????????<property>
????????????<name>dfs.replication</name>
????????????<value>1</value> ? ?
????</property>
群集時一般配置3個最合適。如果只有一臺機子,配置1吧,多了無益,而且會報錯。
-------------------------------------------------------------------------------------------------
????第四個:mapred-site.xml?(mv?mapred-site.xml.template?mapred-site.xml)
????????mv?mapred-site.xml.template?mapred-site.xml ? 修改文件名
????????vim?mapred-site.xml
????????<!--?指定mr運行在yarn上?-->
????????<property>
????????????<name>mapreduce.framework.name</name>
????????????<value>yarn</value>
????</property>
---------------------------------------------------------------------------------------------------
????第五個:yarn-site.xml
????????<!--?指定YARN的老大(ResourceManager)的地址?-->
????????<property>
????????????<name>yarn.resourcemanager.hostname</name>
????????????<value>hello110</value>
????</property>
????????<!--?reducer獲取數據的方式?-->
????<property>
????????????<name>yarn.nodemanager.aux-services</name>
????????????<value>mapreduce_shuffle</value>
?????</property>
---------------------------------------------------------------------------------------------------------------------------------
3、將hadoop添加到環境變量
????vim?/etc/proflie
????????export?JAVA_HOME=/usr/java/jdk1.7.0_65
????????export?HADOOP_HOME=/home/hadoop/hadoop-2.4.1/
????????export?PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
:$HADOOP_HOME/bin 是 hadoop 的一些常用腳本
:$HADOOP_HOME/sbin ?是啟動關閉hadoop的一些腳本
????source?/etc/profile
九、啟動hadoop
????1、格式化namenode(是對namenode進行初始化)
????????hdfs?namenode?-format?( ?hadoop?namenode?-format ?)
????2、啟動hadoop
????????先啟動HDFS
????????sbin/start-dfs.sh
? ? 3、再啟動YARN
????????sbin/start-yarn.sh
十、驗證是否啟動成功
????????使用jps命令驗證
????????27408?NameNode
????????28218?Jps
????????27643?SecondaryNameNode
????????28066?NodeManager
????????27803?ResourceManager
????????27512?DataNode?
-------------第一次的時候用的是2.4.1版本非穩定版,我jdk用了64位的jdk8。hadoop2.4.1的時候是32位的,導致不能啟動 datanode,后來下載了最新穩定版hadoop2.7.1,解決了。
十一、上傳文件測試
????????http://192.168.255.128:50070?(HDFS管理界面)
????????http://192.168.255.128:8088?(MR管理界面)
體驗:將jdk壓縮包上傳到hadoop里面,命令如下
hadoop fs -put jdk....... ?hdfs://hello110:9000 錯誤的命令
報錯:-put:?Pathname??from?hdfs://hello110:9000?is?not?a?valid?DFS?filename.
正確的命令:
hadoop fs -put jdk....... ?hdfs://hello110:9000/ ? ?
?最后的/ 不能少啊,報錯的原因是,無法訪問說,網絡連接不上說,讓我折騰了好久說