搭建Hadoop分布式集群

搭建Hadoop分布式集群

【系统配置说明】

1)系统环境:CentOS-7-x86-Minimal
2)集群部署:一主三从(master/slave1/slave2/slave3)
3)Java环境:jdk-7u79-linux-x86
4)Hadoop :hadoop-2.6.2.tar.gz

【配置Linux系统环境】

(1)网络环境配置

    1) 首先配置四台虚拟机的网络环境,设置为静态IP,IP地址分别如下:
    – master:192.168.216.101
    – slave1 :192.168.216.102
    – slave2 :192.168.216.103
    – slave3 :192.168.216.104

    2) 配置网络地址的命令如下:

    sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33

    3) 需要改动的地方如下(以master为例,其余节点配置过程类似):

		BOOTPROTO=static
		DEVICE=ens33
		ONBOOT=yes
		IPADDR=192.168.216.101
		NETMASK=255.255.255.0
		GATEWAY=192.168.216.2
		DNS1=114.114.114.114
		DNS2=8.8.8.8

    4) 重启网络服务
    sudo systemctl restart network
    ifconfig

(2)修改主机名称

    sudo vi /etc/hostname

    将主机名称修改为master(从节点保持一致), reboot之后可见主机名称改变

(3)关闭防火墙并禁止开机自启动

    sudo systemcl stop firewalld
    sudo systemcl disablefirewalld

(4)配置hosts列表

    下边以主机为例,从节点相同

		127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
		::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
		
		192.168.216.101 master
		192.168.216.102 slave1
		192.168.216.103 slave2
		192.168.216.104 slave3                     

    验证是否修改成功
    ping slave1

(5)安装JDK

    1)下载 jdk-7u79-linux-x64.tar.gz
    2)通过xtfp将jdk文件传送到master的/usr/src目录下
    3)安装JDK,步骤如下:
     su
     cd /usr
     mkdir java
     mv ./src/jdk-7u79-linux-x64.tar.gz ./java
     tar -zxvf jdk-7u79-linux-x64.tar.gz
     cd jdk1.7.0_79
     pwd #复制此处显示路径
     vi /etc/profile
     添加环境变量如下
     export JAVA_HOME=/usr/java/jdk1.7.0_79
     export PATH=$PATH:$JAVA_HOME/bin
     保存退出
     source /etc/profile

(6)免密钥登录配置(Master节点)

     在此步骤之前切换到普通用户身份下
     su master
     ssh-keygen -t rsa #在终端生成密钥
     cd /home/master/.ssh #生成的密钥在此目录下,id_rsa为私钥,id_rsa.pub为公钥
     cat id_rsa.pub >> authorized_keys #复制公钥到authorized_keys文件
     chmod 600 authorized_keys #修改密钥文件的权限
     scp authorized_keys master@slave1:/home/master/.ssh/ #将公钥分发给其他三个从节点
     ssh master@slave1 #验证免密钥登录

【Hadoop的配置部署】

【注】:本部分的安装部署是在普通用户的身份下进行的,请先切换;
    Hadoop集群搭建时,每个节点上的配置都相同,所以只要在master节点上操作配置,配置完成之后复制到slave节点上
    就好了。

(1)解压Hadoop安装文件

   cd /home/master/local/src
   tar -zxvf hadoop-2.6.2.tar.gz
   cd hadoop-2.6.2

(2)配置环境变量 hadoop-env.sh

    vi ./etc/hadoop/hadoop-env.sh #打开环境配置文件
    找到以下代码
    export JAVA_HOME=${JAVA_HOME}
    将其替换为以下代码
    export JAVA_HOME=/usr/jave/jdk1.7.0_79
    保存退出,Hadoop的环境变量hadoop-env.sh配置成功,此时Hadoop具备了运行时的环境。

(3)配置环境变量 yarn-env.sh

    vi ./etc/hadoop/yarn-env.sh
    找到以下代码
    # export JAVA_HOME=/home/y/libexec/jdk1.6.0/
    去掉注释,修改为以下代码
    export JAVA_HOME=/home/java/jdk1.7.0_79
    保存退出,Hadoop的YARN环境变量配置成功。此时,Hadoopd YARN模块具备了运行时的环境。

(4)配置核心组件 core-site.xml

    这个xml文件是Hadoop集群的核心配置,是关于集群中分布式文件系统的入口地址和分布式文件系统中数据落地到服务器本地磁盘位置的配置。
    vi core-site.xml
    在<configuration></configuration>中插入以下代码

		<!--HDFS文件系统的入口地址信息-->
        <property>
                <name>fs.default.name</name>
                <value>hdfs://master:9000</value>
        </property>

        <property>
                <name>hadoop.tmp.dir</name>
                <value>/home/master/var/hadoop/tmp</value>
        </property>

    至此,hadoop集群的核心配置完成(slave节点的要设置对应的路径)。

(5)配置文件系统 hdfs-site.xml

    vi hdfs-site.xml
    在<configuration></configuration>中插入以下代码

			<property>
				<name>dfs.name.dir</name>
				<value>/home/master/var/hadoop/dfs/name</value>
			</property>
		
			<property>
				<name>dfs.data.dir</name>
				<value>/home/master/var/hadoop/dfs/data</value>
			</property>
		
			<property>
				<!--配置数据块的副因子(即副本数)为2-->
				<name>dfs.replication</name>
				<value>2</value>
			</property>

			<property>
				<name>dfs.permissions</name>
				<value>false</value>
			</property>

    至此,Hadoop集群的HDFS分布式文件系统数据块副本数配置完成。

(6)配置YARN资源系统 yarn-site.xml

    vi yarn-site.xml
    在<configuration></configuration>中插入以下代码

			<property>
				<name>yarn.resourcemanager.hostname</name>
				<value>master</value>
			</property>
		
			<property>
				<name>yarn.nodemanager.aux-services</name>
				<value>mapreduce_shuffle</value>
			</property>
		
			<property>
				<name>yarn.resourcemanager.address</name>
				<value>${yarn.resourcemanager.hostname}:8032</value>
			</property>
		
			<property>
				<name>yarn.resourcemanager.scheduler.address</name>
				<value>${yarn.resourcemanager.hostname}:8030</value>
			</property>
		
			<property>
				<name>yarn.resourcemanager.resource-tracker.address</name>
				<value>${yarn.resourcemanager.hostname}:8031</value>
			</property>
		
			<property>
				<name>yarn.resourcemanager.admin.address</name>
				<value>${yarn.resourcemanager.hostname}:8033</value>
			</property>
		
			<property>
				<name>yarn.resourcemanager.webapp.address</name>
				<value>${yarn.resourcemanager.hostname}:8088</value>
			</property>
		
			<property>
				<name>yarn.resourcemanager.webapp.https.address</name>
				<value>${yarn.resourcemanager.hostname}:8090</value>
			</property>
			
			<property>
				<name>yarn.scheduler.maximum-allocation-mb</name>
				<value>2048</value>
			</property>
		
			<property>
				<name>yarn.nodemanager.vmem-pmem-ratio</name>
				<value>2.1</value>
			</property>
		
			<property>
				<name>yarn.nodemanager.resource.memory-mb</name>
				<value>2048</value>
			</property>
		
			<property>
				<name>yarn.nodemanager.vmem-check-enabled</name>
				<value>false</value>
			</property>

(7)配置计算框架 mapred-site.xml

    cp mapred-site.xml.template mapred-site.xml
    vi mapred-site.xml
    在<configuration></configuration>中插入以下代码

		<property>
			<name>mapred.job.tracker</name>
			<value>master:49001</value>
		</property>
			
		<!--MapReduce计算框架的资源交给YARN来管理-->
		<property>
			<name>mapreduce.framework.name</name>
			<value>yarn</value>
		</property>
			
		<property>
			<name>mapred.local.dir</name>
			<value>/home/master/var/hadoop/var</value>
		</property>

    1)在master节点配置slaves
      vi ./slaves
      用下面的内容替换salves文件中的内容
      slave1
      slave2
      slave3
    2)复制到从节点

(8)配置 Hadoop 启动的系统环境变量

    主从节点均执行以下操作
    vi ~/.bash_profile
    添加以下内容
    export HADOOP_HOME=/home/master/local/hadoop-2.6.2
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    source ~/.bash_profile

(9)创建数据目录

    主从节点均执行以下操作
    cd ~
    mkdir var
    cd var
    mkdir hadoop
    cd hadoop
    mkdir tmp dfs var
    cd dfs
    mkdir name data

(10)启动Hadoop集群

    Hadoop集群包含两个基本模块:分布式文件系统HDFS和分布式并行计算框架MapReduce。启动集群时,首先要做的就是在master节点上格式化分布式文件系统HDFS。
    1)格式化文件系统
      hdfs namenode -format
    2)启动 Hadoop
      start-all.sh
    3)查看进程是否启动
      jps
      master 节点显示Jps,ResourceManager,SecondaryNameNode,NameNode表示主节点进程启动成功。
      slave节点显示Jps,DataNode,NodeManager表示从节点启动成功。
    4)Web UI查看集群启动是否成功
      浏览器地址栏输入 http://192.168.216.101:50070
在这里插入图片描述

      浏览器地址栏输入 http://192.168.216.101:8088
在这里插入图片描述
    5)运行PI实例检查集群安装是否成功
      cd ~/local/hadoop-2.6.2/share/hadoop/mapreduce/
      hadoop jar hadoop-mapreduce-examples-2.6.2.jar pi 10 10
      结果如下所示即为安装成功
     Job Finished in 79.37 seconds
     Estimated value of Pi is 3.20000000000000000000

至此,Hadoop集群安装启动成功。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hadoop集群安装的详细说明文档, 實作七: Hadoop 叢集安裝 前言 您手邊有兩台電腦,假設剛剛操作的電腦為"主機一" ,另一台則為"主機二" 。則稍後的環境如下 • 管理Data的身份 管理Job的身份 "主機一" namenode + datanode jobtracker + tasktracker "主機二" datanode tasktracker 這個實做會架設運作在叢集環境上的Hadoop,因此若是你的電腦還存在著 之前的實做一的環境,請先作step 0,以移除掉之前的設定。 • 確認您"主機一"的 hostname 與 "主機二" 的 hostname,並將下面指令 有 主機一與主機二 的地方作正確的取代 • 維持好習慣,請幫你待會要操作的主機設root密碼 • ~$ sudo passwd 清除所有在實做一作過的環境 在 "主機一" (有操作過 實做一 的電腦)上操作 • ~$ cd ~ ~$ /opt/hadoop/bin/stop-all.sh ~$ rm -rf /tmp/hadoop-hadooper* ~$ sudo rm -rf /opt/hadoop ~$ rm -rf ~/.ssh step 0. 設定機器的ip & hostname 資訊 step 1. 設定兩台機器登入免密碼 請注意我們實驗環境已經把 /etc/ssh/ssh_config裡的StrictHostKeyChecking改成no,下面的指令可以檢查,如果你的設定 不同的話,請修改此檔會比較順。 • $ cat /etc/ssh/ssh_config |grep StrictHostKeyChecking StrictHostKeyChecking no 在"主機一" 上操作 • 接著將key產生並複製到其他node上 • ~$ ssh-keygen -t rsa -f ~/.ssh/id_rsa -P "" ~$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys ~$ scp -r ~/.ssh 主機二:~/ 測試看看是否登入免密碼 • ~$ ssh 主機二 ~$ ssh 主機一 ~$ exit ~$ exit ~$ 完成後請登入確認不用輸入密碼,(第一次登入需按 yes ,第二次就可以直接登入到系統),以免日後輸入密碼不隻手軟而 已.... • step 2. 安裝java 為兩台電腦安裝java • "主機一" & "主機二" 都要操作以下指令 ◦ ~$ sudo apt-get purge java-gcj-compat ~$ sudo apt-get install sun-java6-bin sun-java6-jdk sun-java6-jre ~$ ssh 主機二 前言 清除所有在實做一作過的環境 step 0. 設定機器的ip & hostname 資訊 step 1. 設定兩台機器登入免密碼 step 2. 安裝java step 3. 下載安裝Hadoop到"主機一" step 4. 設定 hadoop-env.sh step 5. 設定 hadoop-site.xml step 6. 設定masters及slaves step 7. Hadoop_Home內的資料複製到其他主機上 step 8. 格式化HDFS step 9. 啟動Hadoop step 10. 停止hadoop 練習 页码,1/5 Hadoop_Lab7_018 – Cloud Computing 2011-03-25 http://trac.nchc.org.tw/cloud/wiki/Hadoop_Lab7_018 ~$ sudo apt-get purge java-gcj-compat ~$ sudo apt-get install sun-java6-bin sun-java6-jdk sun-java6-jre ~$ exit step 3. 下載安裝Hadoop到"主機一" 先在"主機一" 上安裝,其他node的安裝等設定好之後在一起作 • ~$ cd /opt /opt$ sudo wget http://ftp.twaren.net/Unix/Web/apache/hadoop/core/hadoop-0.18.3/hadoop-0.18.3.t /opt$ sudo tar zxvf hadoop-0.18.3.tar.gz /opt$ sudo mv hadoop-0.18.3/ hadoop /opt$ sudo chown -R hadooper:hadooper hadoop step 4. 設定 hadoop-env.sh "主機一" 上用gedit 編輯 conf/hadoop-env.sh • /opt$ cd hadoop/ /opt/hadoop$ gedit conf/hadoop-env.sh 將以下資訊貼入 conf/hadoop-env.sh 檔內 export JAVA_HOME=/usr/lib/jvm/java-6-sun export HADOOP_HOME=/opt/hadoop export HADOOP_CONF_DIR=/opt/hadoop/conf export HADOOP_LOG_DIR=/tmp/hadoop/logs export HADOOP_PID_DIR=/tmp/hadoop/pids 注意,在此實做中,我們多設定了HADOOP_PID_DIR及HADOOP_LOG_DIR的參數,並且把值寫入到我們hadooper的家目 錄中,此舉並非完全必要,但一個目的是介紹更多hadoop-env.sh內的參數,另一目的為讓log,pid等常變資料與hadoop家目 錄分離 • step 5. 設定 hadoop-site.xml 第二個設定檔是 hadoop-site.xml,由於官方所提供的範例並無法直接執行,因此我們參考線上文件,做了以下的修改。 • /opt/hadoop# gedit conf/hadoop-site.xml 將以下資料取代掉原本的內容 <configuration> <property> <name>fs.default.name</name> <value>hdfs://主機一:9000/</value> <description> </description> </property> <property> <name>mapred.job.tracker</name> <value>主機一:9001</value> <description> </description> </property> <property> <name>hadoop.tmp.dir</name> <value>/tmp/hadoop/hadoop-${user.name}</value> <description> </description> </property> </configuration> 注意! 我們多加了一個參數hadoop.tmp.dir,讓預設的中介資料存放在/tmp/hadoop/ 而不是/tmp/ 下,更多內容可以看 conf/hadoop-default.xml • 注意!fs.default.name = hdfs://主機一:9000/ ;而mapred.job.tracker = 主機一:9001,看出差異了嗎!一個有指 hdfs://,一個沒有,重要!易混淆。 • step 6. 設定masters及slaves 接著我們要編輯哪個主機當namenode, 若有其他主機則為datanodes • 編輯 conf/slaves ◦ 页码,2/5 Hadoop_Lab7_018 – Cloud Computing 2011-03-25 http://trac.nchc.org.tw/cloud/wiki/Hadoop_Lab7_018 /opt/hadoop$ gedit conf/slaves 原本內容只有localhost一行,請刪除此行並換上"主機一" 及"主機二" 的ip 主機一 主機二 step 7. Hadoop_Home內的資料複製到其他主機上 在"主機一" 上對遠端"主機二" 作開資料夾/opt/hadoop及權限設定 • /opt/hadoop$ ssh 主機二 "sudo mkdir /opt/hadoop" /opt/hadoop$ ssh 主機二 "sudo chown -R hadooper:hadooper /opt/hadoop" 複製"主機一" 的hadoop資料夾到"主機二" 上 • /opt/hadoop$ scp -r /opt/hadoop/* 主機二:/opt/hadoop/ step 8. 格式化HDFS 以上我們已經安裝及設定好 Hadoop 的叢集環境,接著讓我們來啟動 Hadoop ,首先還是先格式化hdfs,在"主機一" 上操作 • /opt/hadoop$ bin/hadoop namenode -format 執行畫面如: 09/03/23 20:19:47 INFO dfs.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = 主機一 STARTUP_MSG: args = [-format] STARTUP_MSG: version = 0.18.3 STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/core/branches/branch-0.18 -r 736 ************************************************************/ 09/03/23 20:19:47 INFO fs.FSNamesystem: fsOwner=hadooper,hadooper 09/03/23 20:19:47 INFO fs.FSNamesystem: supergroup=supergroup 09/03/23 20:19:47 INFO fs.FSNamesystem: isPermissionEnabled=true 09/03/23 20:19:47 INFO dfs.Storage: Image file of size 82 saved in 0 seconds. 09/03/23 20:19:47 INFO dfs.Storage: Storage directory /tmp/hadoop/hadoop-hadooper/dfs/name has b 09/03/23 20:19:47 INFO dfs.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at 主機一 ************************************************************/ step 9. 啟動Hadoop bin/start-dfs.sh腳本會參照namenode上${HADOOP_CONF_DIR}/slaves文件的內容,在所有列出的slave上啟動 datanode。 • 在"主機一" 上,執行下面的命令啟動HDFS: • /opt/hadoop$ bin/start-dfs.sh http://主機一:50070/ - Hadoop DFS 狀態 • 页码,3/5 Hadoop_Lab7_018 – Cloud Computing 2011-03-25 http://trac.nchc.org.tw/cloud/wiki/Hadoop_Lab7_018 • ps: 然而JobTracker還沒啟動,因此 http://主機一:50030/ 網頁無法顯示 • bin/start-mapred.sh腳本會參照jobtracker上${HADOOP_CONF_DIR}/slaves文件的內容,在所有列出的slave上啟動 tasktracker。 • 在"主機一"執行下面的命令啟動Map/Reduce: • /opt/hadoop$ /opt/hadoop/bin/start-mapred.sh 啟動之後, jobtracker也正常運作囉! • http://主機一:50030/ - Hadoop 管理介面 • 页码,4/5 Hadoop_Lab7_018 – Cloud Computing 2011-03-25 http://trac.nchc.org.tw/cloud/wiki/Hadoop_Lab7_018 • step 10. 停止hadoop 在"主機一" 上,執行下面的命令停止HDFS: • /opt/hadoop$ bin/stop-dfs.sh bin/stop-dfs.sh腳本會參照namenode上${HADOOP_CONF_DIR}/slaves文件的內容,在所有列出的slave上停止 namenode ◦ 在"主機一" 上,執行下面的命令停止Map/Reduce: • /opt/hadoop$ bin/stop-mapred.sh bin/stop-mapred.sh腳本會參照jobtracker上${HADOOP_CONF_DIR}/slaves文件的內容,在所有列出的slave上停 止tasktracker。 ◦ 練習 看 conf/hadoop-default.xml 的更多內容 • 和別人組隊,組成4台node的cluster,其中"主機一" 只當 namenode ,"主機二" 只當 jobtracker,而node3, node4 兩台 電腦則身兼 datanode及tasktracker的工作。 • 页码,5/5 Hadoop_Lab7_018 – Cloud Computing 2011-03-25 http://trac.nchc.org.tw/cloud/wiki/Hadoop_Lab7_018

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值