Hadoop 2.2.0 集群搭建
概述
在前面我有寫過關于 Hadoop 集群的搭建,不過之前的 Hadoop 是 1.x 版本的。目前是基于 2.x 版本的 Hadoop,與之前的 1.x 版本的差別還是挺大的。以及更為詳細的 SSH 免密碼互連登錄的配置過程。所以,這里也把我搭建的過程記錄下來了。希望于你有益。
版權說明
著作權歸作者所有。
商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
本文作者:Q-WHai
發表日期: 2016年5月4日
本文鏈接:http://blog.csdn.net/lemon_tree12138/article/details/51316883
來源:CSDN
更多內容:分類 >> 大數據之 Hadoop
目錄
文章目錄
- 概述
- 版權說明
- 目錄
- @[toc]
- 環境說明
- 系統環境準備
- 關閉防火墻
- 禁用 IPv6
- 禁用 SELinux
- 修改 hosts
- Oracle JDK 1.8 安裝
- 配置 SSH
- 下載安裝
- 驗證
- 創建目錄
- 修改配置文件
- 重啟 ssh
- 創建密鑰
- 公鑰下發
- 創建認證文件
- 登錄驗證
- 補充
- Hadoop 配置
- 下載安裝
- 配置文件
- /etc/profile
- ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
- ${HADOOP_HOME}/etc/hadoop/yarn-env.sh
- ${HADOOP_HOME}/etc/hadoop/core-site.xml
- ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
- ${HADOOP_HOME}/etc/hadoop/mapred-site.xml
- ${HADOOP_HOME}/etc/hadoop/yarn-site.xml
- ${HADOOP_HOME}/etc/hadoop/slaves
- 下發
- 啟動及驗證
- 格式化 HDFS
- 啟動 HDFS
- 啟動 Yarn
- 啟動全部
- 驗證
- 關閉全部
- Ref
- 征集
- @[toc]
- 關閉防火墻
- 禁用 IPv6
- 禁用 SELinux
- 修改 hosts
- 下載安裝
- 驗證
- 創建目錄
- 修改配置文件
- 重啟 ssh
- 創建密鑰
- 公鑰下發
- 創建認證文件
- 登錄驗證
- 補充
- 下載安裝
- 配置文件
- /etc/profile
- ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
- ${HADOOP_HOME}/etc/hadoop/yarn-env.sh
- ${HADOOP_HOME}/etc/hadoop/core-site.xml
- ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
- ${HADOOP_HOME}/etc/hadoop/mapred-site.xml
- ${HADOOP_HOME}/etc/hadoop/yarn-site.xml
- ${HADOOP_HOME}/etc/hadoop/slaves
- 下發
- 啟動及驗證
- 格式化 HDFS
- 啟動 HDFS
- 啟動 Yarn
- 啟動全部
- 驗證
- 關閉全部
環境說明
系統環境準備
關閉防火墻
$ sudo service iptables stop $ sudo chkconfig iptables off # 設置防火墻不隨系統啟動,這一條你可以選擇性添加禁用 IPv6
$ sudo vim /etc/modprobe.d/dist.conf添加如下內容
alias net-pf-10 off alias ipv6 off重啟后驗證操作
$ lsmod|grep ipv6禁用 SELinux
$ sudo vim /etc/selinux/config修改后的內容如下:
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded.# SELINUX=enforcing SELINUX=disabled# SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted修改 hosts
(1) hostname
$ sudo vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=master GATEWAY=172.16.2.20(2)
$ sudo vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6172.16.2.144 master 172.16.2.171 slave1 172.16.2.91 slave2Oracle JDK 1.8 安裝
關于 Java 的安裝,你可以有兩種選擇。一是 openjdk,另一個就是 Oracle jdk。這里我選擇的是 Oracle jdk,而推薦的也是 Oracle jdk。
安裝過程很簡單,這里就不贅述了。
配置 SSH
配置 SSH 的目的在于實現集群中的機器可以免密碼相互登錄。
下載安裝
$ sudo yum -y install openssh-server $ sudo yum -y install openssh-clients這里的 openssh-clients 不是必須安裝的。如果你安裝 ssh-server 完成之后,運行 ssh 出現系統無法識別 ssh 的話,需要另外安裝 openssh-clients。
驗證
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013 Bad escape character 'rsion'.如果 SSH 安裝成功,驗證時會出現類似上面的版本信息。
創建目錄
$ mkdir -p ~/.ssh $ chmod 700 ~/.ssh如果你在安裝完SSH后,這些目錄都未自動生成,請自行創建。如果要免密碼登錄,.ssh 文件夾的權限也要修改。
修改配置文件
執行如下指令:
$ sudo vim /etc/ssh/sshd_config在文件中找到如下內容,將內容前面的注釋去掉。如果沒有,就自己添加吧。
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys這一步是至關重要的,如果沒有這一步,那么只能免密碼登錄本機,而無法免密碼登錄其他的機子了。
這里比如,如果你想讓 master 主機免密碼登錄 slave 主機,那么就要修改 master 主機的配置文件。
重啟 ssh
$ sudo service sshd restart由于修改了 ssh 的配置文件,所以這里必須重啟 ssh 服務才能生效。
創建密鑰
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa指令的相關參數說明如下:
ssh-keygen 表示生成密鑰 -t 表示指定生成的密鑰類型 dsa 是dsa密鑰認證的意思,即密鑰類型 -P 提供密語 -f 指定生成的密鑰文件公鑰下發
$ scp id_dsa.pub slave1:~/.ssh/這里是將 master 的公鑰下發到 slave 機群中。在第一次下發的時候,會有一些連接提示及密碼提示。
創建認證文件
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys $ chmod 600 ~/.ssh/authorized_keys將 master 主機上的公鑰添加到用于認證的公鑰文件中,authorized_keys 是用于認證的公鑰文件。并修改 認證文件的權限。
此步驟是在 slave 機上完成。
登錄驗證
[hadoop@master .ssh]$ ssh slave1 Last login: Thu Apr 28 15:17:57 2016 from master [hadoop@slave1 ~]$補充
上面的過程只是單向的免密碼登錄。如果想要兩兩相互免密碼登錄,則需要集群中的所有機器都有其他機器的公鑰。而具體操作也很簡單,這里就不贅述了。
Hadoop 配置
下載安裝
這里可以在 Apache 的官網上下載,如果官網已經下架,就去百度或是 Google 里找,總會有的。
將下載下來的 Hadoop-2.2.0 用 WinSCP 上傳到虛擬機上(當然你也可以直接在虛擬機里下載),解壓,并重命名為 hadoop。
上面對兩個文件夾進行權限修改,是因為在這兩個文件里有一些可執行文件,如果不修改他們的執行權限,那在啟動時就會有權限限制。
配置文件
對于上面的下載安裝步驟,基本已經 ok,不過如果想要正常使用,還是要配置,而 Hadoop 環境部署的核心就是此處的配置文件。
需要修改的配置文件列表如下:
/etc/profile
這是系統里的環境變量配置文件。配置此項目的目的是在于方便在任意目錄都可以使用 Hadoop/bin 里的可執行文件(當然你也可以把 $HADOOP_HOME/sbin 加進去)。
export HADOOP_HOME=/home/hadoop/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
在環境變量配置文件的合適位置添加如下 JAVA_HOME 信息:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_92${HADOOP_HOME}/etc/hadoop/yarn-env.sh
在環境變量配置文件的合適位置添加如下 JAVA_HOME 信息:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_92${HADOOP_HOME}/etc/hadoop/core-site.xml
<configuration><property><name>fs.default.name</name><value>hdfs://master:9000</value></property><property><name>hadoop.tmp.dir</name><value>file:/home/hadoop/hadoop/tmp</value></property></configuration>${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
<configuration><property><name>dfs.namenode.secondary.http-address</name><value>master:50090</value></property><property><name>dfs.namenode.name.dir</name><value>file:/home/hadoop/dfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>file:/home/hadoop/dfs/data</value></property><property><name>dfs.replication</name><value>2</value></property><property><name>dfs.support.append</name><value>true</value></property></configuration>dfs.replication 的值一般設為 3,但我們只有兩個 Slave 節點,所以 dfs.replication 的值重置為 2。
${HADOOP_HOME}/etc/hadoop/mapred-site.xml
<configuration><property><name>mapreduce.job.tracker</name><value>hdfs://master:9001</value></property><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>master:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>master:19888</value></property></configuration>需要先重命名,默認文件名為 mapred-site.xml.template.
${HADOOP_HOME}/etc/hadoop/yarn-site.xml
<configuration><property><name>yarn.resourcemanager.hostname</name><value>master</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property></configuration>需要先重命名,默認文件名為 yarn-site.xml.template.
${HADOOP_HOME}/etc/hadoop/slaves
slave1 slave2下發
這里說的下發就是把配置好的 hadoop,復制到另外兩臺 Slave 機中。下發的操作是基于 SSH 的,如下:
$ scp -r ~/hadoop slave1:~/ $ scp -r ~/hadoop slave2:~/啟動及驗證
格式化 HDFS
在啟動 Hadoop 之前,我們需要先格式化 HDFS。如下:
$ hadoop namenode –format對于正常格式化的操作,這里會顯示如下輸出:
DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it.16/05/04 10:15:38 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = master/172.16.2.117 STARTUP_MSG: args = [-format] STARTUP_MSG: version = 2.2.0 STARTUP_MSG: classpath = /home/hadoop/hadoop/etc/hadoop: ( ... 此處省略 N 條 ... ) :/home/hadoop/hadoop/contrib/ capacity-scheduler/*.jar STARTUP_MSG: build = Unknown -r Unknown; compiled by 'root' on 2013-11-22T03:4 1Z STARTUP_MSG: java = 1.8.0_92 ************************************************************/( ... 此處省略 N 條 ... ) 16/05/04 10:15:45 INFO common.Storage: Storage directory /home/hadoop/dfs/name has been successfully formatted. 16/05/04 10:15:45 INFO namenode.FSImage: Saving image file /home/hadoop/dfs/name/current/fsimage.ckpt_0000000000000000000 using no compression 16/05/04 10:15:45 INFO namenode.FSImage: Image file /home/hadoop/dfs/name/current/fsimage.ckpt_0000000000000000000 of size 198 bytes saved in 0 seconds. 16/05/04 10:15:45 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0 16/05/04 10:15:45 INFO util.ExitUtil: Exiting with status 0 16/05/04 10:15:45 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at master/172.16.2.117 ************************************************************/啟動 HDFS
$ ${HADOOP_HOME}/sbin/start-dfs.sh對于正常的啟動來說,會有類似如下的輸出內容:
Starting namenodes on [master] The authenticity of host 'master (172.16.2.144)' can't be established. RSA key fingerprint is 98:4f:21:03:76:e2:e9:96:77:3e:88:c5:88:70:04:cf. Are you sure you want to continue connecting (yes/no)? yes master: Warning: Permanently added 'master,172.16.2.144' (RSA) to the list of kn own hosts. master: starting namenode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-nam enode-master.out hadoop@slave1's password: hadoop@slave2's password: slave1: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-dat anode-slave1.outslave2: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-dat anode-slave2.out Starting secondary namenodes [master] master: starting secondarynamenode, logging to /home/hadoop/hadoop/logs/hadoop-h adoop-secondarynamenode-master.out啟動 Yarn
$ ${HADOOP_HOME}/sbin/start-yarn.sh對于正常的啟動來說,會有類似如下的輸出內容:
starting yarn daemons starting resourcemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-resourcemanager-master.out hadoop@slave2's password: hadoop@slave1's password: slave2: starting nodemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-nodemanager-slave2.outslave1: starting nodemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-nodemanager-slave1.out啟動全部
$ ${HADOOP_HOME}/sbin/start-all.sh對于正常的啟動來說,會有類似如下的輸出內容:
[hadoop@master hadoop]$ ./sbin/start-all.sh This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh Starting namenodes on [master] master: starting namenode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-namenode-master.out slave2: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-datanode-slave2.out slave1: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-datanode-slave1.out Starting secondary namenodes [master] master: starting secondarynamenode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-secondarynamenode-master.out starting yarn daemons starting resourcemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-resourcemanager-master.out slave2: starting nodemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-nodemanager-slave2.out slave1: starting nodemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-nodemanager-slave1.out驗證
(1) 驗證啟動的進程
$ jpsMaster 端
[hadoop@master hadoop]$ jps 3202 Jps 2923 ResourceManager 2795 SecondaryNameNode 2637 NameNodeSlave 端
[hadoop@slave1 ~]$ jps 2256 DataNode 2419 Jps 2319 NodeManager(2) 網頁驗證
# 查看 HDFS 登錄瀏覽器,輸入 http://master:50070# 查看 RM 登錄瀏覽器,輸入 http://master:8088關閉全部
$ ${HADOOP_HOME}/sbin/stop-all.sh對于正常的啟動來說,會有類似如下的輸出內容:
[hadoop@master hadoop]$ ${HADOOP_HOME}/sbin/stop-all.sh This script is Deprecated. Instead use stop-dfs.sh and stop-yarn.sh Stopping namenodes on [master] master: stopping namenode slave2: stopping datanode slave1: stopping datanode Stopping secondary namenodes [master] master: stopping secondarynamenode stopping yarn daemons no resourcemanager to stop slave2: no nodemanager to stop slave1: no nodemanager to stop no proxyserver to stopRef
- http://blog.csdn.net/liyong199012/article/details/24019333
- http://shiyanjun.cn/archives/561.html
征集
如果你也需要使用ProcessOn這款在線繪圖工具,可以使用如下邀請鏈接進行注冊:
https://www.processon.com/i/56205c2ee4b0f6ed10838a6d
總結
以上是生活随笔為你收集整理的Hadoop 2.2.0 集群搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DNS 截持模拟及环境搭建
- 下一篇: 从 WordCount 到 MapRed