1 準備3台客戶機(關閉防火牆,設置靜態IP,主機名稱) 1.1 修改host文件 我們希望三個主機之間都能夠使用主機名稱的方式相互訪問而不是IP,我們需要在hosts中配置其他主機的host。因此我們在三個主機的/etc/hosts下均進行如下配置:1. 打開hosts文件 2. 配置主機host ...
1 準備3台客戶機(關閉防火牆,設置靜態IP,主機名稱)
1.1 修改host文件
我們希望三個主機之間都能夠使用主機名稱的方式相互訪問而不是IP,我們需要在hosts中配置其他主機的host。因此我們在三個主機的/etc/hosts下均進行如下配置:
1. 打開hosts文件
[root@node21 ~]# vi /etc/hosts
2. 配置主機host
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.100.21 node21 192.168.100.22 node22 192.168.100.23 node23
3. 將配置發送到其他主機(同時在其他主機上配置)
[root@node21 ~]# scp /etc/hosts root@node22:/etc/hosts [root@node21 ~]# scp /etc/hosts root@node23:/etc/hosts
4. 測試
[root@node21 ~]# ping node21 [root@node21 ~]# ping node22 [root@node21 ~]# ping node23
1.3 添加用戶賬號
我們在所有的主機下均建立一個賬號用來運行hadoop ,並將其添加至sudoers中
創建deng賬號的命令如下
[root@node21 ~]# useradd deng 添加用戶通過手動輸入修改密碼 [root@node21 ~]# passwd --stdin deng 更改用戶 deng 的密碼 123456 passwd: 所有的身份驗證令牌已經成功更新。
添加deng組到sudo中,在其中添加下麵一行:
[root@node21 ~]# visudo 添加 deng ALL=(ALL) ALL
改行意思為,組:deng內的用戶允許免密碼使用sudo命令
測試:
[root@node21 root]$ su deng [deng@node21 root]$ sudo
1.3 配置yum源
yum install wget -y #安裝wget mv /etc/yum.repos.d /etc/yum.repos.d.backup4comex #備份當前的yum源 mkdir /etc/yum.repos.d #新建空的yum源設置目錄 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #下載阿裡雲的yum源配置 yum clean all #重建緩存 yum makecache
2 安裝jdk1.8,配置環境變數
[deng@node21 ~]# rpm -qa|grep java #查詢是否安裝java軟體: [deng@node21 ~]# rpm -e –nodeps 軟體包 #如果安裝的版本低於1.7,卸載該jdk [root@node21 opt]# mkdir module [root@node21 opt]# mkdir tools 線上安裝 wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz 這裡使用本地下載然後 xftp上傳到 /opt/tools/ 下 [root@node21 tools]# tar zxvf jdk-8u171-linux-x64.tar.gz -C /opt/module/ [root@node21 module]# mv jdk1.8.0_171 jdk1.8 設置JAVA_HOME vi /etc/profile export JAVA_HOME=/opt/module/jdk1.8 export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/sbin source /etc/profile 向其他節點複製jdk [root@node21 ~]# scp -r /opt/module/jdk1.8 root@node22:`pwd` [root@node21 ~]# scp -r /opt/module/jdk1.8 root@node23:`pwd` 配置各個主機下jdk的環境變數,由於我的電腦上linux都是新安裝的,環境變數相同,因此直接複製到了其他主機上。如果不同的主機的環境變數不同,請手動設置 [root@node21 ~]# scp /etc/profile root@node22:/etc/profile [root@node21 ~]# scp /etc/profile root@node23:/etc/profile 在每個主機上都重新編譯一下/etc/profile [root@node21]# source /etc/profile 測試 java -version
3 設置SSH免密碼登陸
關於ssh免密碼的設置,要求每兩台主機之間設置免密碼,自己的主機與自己的主機之間也要求設置免密碼。 這項操作我們可以在deng用戶下執行。
[root@node21 ~]# su deng [root@node21 ~]# ssh-keygen -t rsa [root@node21 ~]# ssh-copy-id node21 [root@node21 ~]# ssh-copy-id node22 [root@node21 ~]# ssh-copy-id node23
node1與node2為namenode節點要相互免秘鑰 HDFS的HA
[root@node22 ~]# ssh-keygen -t rsa [root@node22 ~]# ssh-copy-id node22 [root@node22 ~]# ssh-copy-id node21 [root@node22 ~]# ssh-copy-id node23
node2與node3為yarn節點要相互免秘鑰 YARN的HA
[root@node23 ~]# ssh-keygen -t rsa [root@node23 ~]# ssh-copy-id node23 [root@node23 ~]# ssh-copy-id node21 [root@node23 ~]# ssh-copy-id node22
4 安裝hadoop配置集群
4.1 安裝hadoop,配置環境變數
[root@node21 tools]# tar zxvf hadoop-2.7.6.tar.gz -C /opt/module/ vi /etc/profile export HADOOP_HOME=/opt/module/hadoop-2.7.6 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin 編譯生效 . /etc/profile
4.2 hadoop集群部署規劃
node21 | NameNode | DataNode | NodeManager | ||
node22 | SecondaryNameNode | DataNode | ResourceManager | NodeManager | |
node23 | DataNode | NodeManager |
4.3 修改hadoop安裝包/etc/hadoop/下配置文件
4.3.1 修改core-site.xml
[root@node21 hadoop]$ vi core-site.xml <!-- 指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://node21:9000</value> </property> <!-- 指定hadoop運行時產生文件的存儲目錄 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.6/data/tmp</value> </property>
4.3.2 修改hdfs 包括hadoop-env.sh,hdfs-site.xml,slaves
[root@node21 hadoop]$ vi hadoop-env.sh export JAVA_HOME=/opt/module/jdk1.8 [root@node21 hadoop]$ vi hdfs-site.xml <configuration> <!-- 設置dfs副本數,不設置預設是3個 --> <property> <name>dfs.replication</name> <value>3</value> </property> <!-- 設置secondname的埠 --> <property> <name>dfs.namenode.secondary.http-address</name> <value>node23:50090</value> </property> </configuration> [root@node21 hadoop]$ vi slaves node21 node22 node23
4.3.3 修改Yarn 包括yarn-env.sh,yarn-site.xml
[root@node21 hadoop]$ vi yarn-env.sh export JAVA_HOME=/opt/module/jdk1.8 [root@node21 hadoop]$ vi yarn-site.xml <configuration> <!-- reducer獲取數據的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定YARN的ResourceManager的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>node22</value> </property> </configuration>
4.3.4 修改Mapreduce 包括mapred-env.sh,mapred-site.xml
[root@node21 hadoop]$ vi mapred-env.sh export JAVA_HOME=/opt/module/jdk1.8 [root@node21 hadoop]$ vi mapred-site.xml <configuration> <!-- 指定mr運行在yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
4.3.5 在集群上分發hadoop安裝包文件(前面已配置hadoop環境變數)
[root@node21 module]# scp -r hadoop-2.7.6/ root@node22:`pwd` [root@node21 module]# scp -r hadoop-2.7.6/ root@node23:`pwd`
5 啟動集群與測試
5.1 啟動集群
如果集群是第一次啟動,需要格式化namenode [root@node21 hadoop-2.7.6]$ hdfs namenode -format 啟動HDFS:[root@node21 hadoop-2.7.6]$ start-dfs.sh [root@node21 hadoop-2.7.6]$ jps 4166 NameNode 4482 Jps 4263 DataNode [root@node22 hadoop-2.7.6]$ jps 3218 DataNode 3288 Jps [root@node23 hadoop-2.7.6]$ jps 3221 DataNode 3283 SecondaryNameNode 3364 Jps 啟動YARN:註意:Namenode和ResourceManger如果不是同一臺機器,不能在NameNode上啟動 yarn,應該在ResouceManager所在的機器上啟動yarn。 [root@node22 hadoop-2.7.6]$ start-yarn.sh
5.2 集群基本測試
上傳文件 [root@node21 hadoop-2.7.6]$ hadoop fs -mkdir -p /user/deng/input [root@node21 hadoop-2.7.6]$ hadoop fs -put wcinput/wc.input /user/root/input 下載文件 [root@node21 hadoop-2.7.6]$ hadoop fs -get /user/root/input/wc.input
5.3 Hadoop啟動停止方式
1)各個服務組件逐一啟動 分別啟動hdfs組件: hadoop-daemon.sh start|stop namenode|datanode|secondarynamenode 啟動yarn:yarn-daemon.sh start|stop resourcemanager|nodemanager 2)各個模塊分開啟動(配置ssh是前提)常用 start|stop-dfs.sh start|stop-yarn.sh 3)全部啟動(不建議使用) start|stop-all.sh
5.4 集群時間同步(略)