Hadoop集群安装-企业级

本文详细介绍Hadoop集群的安装步骤,包括操作系统准备、软件包安装、主机角色分配及网络配置等关键环节,并提供核心配置文件的具体设置方法。

1.集群安装

操作系统准备

  • 安装RHEL/CentOS/Hanwate7操作系统
  • 插入操作系统光盘并且挂载
# mount /dev/cdrom /mnt/cdrom
  • 安装操作系统的核心软件
# cd /mnt/cdrom/Packges/base
#rpm -ivh make*openssl-1*
  • 卸载光盘
# umount/mnt/cdrom

rpm 执行安装包
二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由 RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。
常用命令组合:
-ivh:安装显示安装进度–install–verbose–hash
-Uvh:升级软件包–Update;
-qpl: 列出RPM软件包内的文件信息[Query Package list];
-qpi:列出RPM软件包的描述信息[Query Package install package(s)];
-qf:查找指定文件属于哪个RPM软件包[Query File];
-Va:校验所有的 RPM软件包,查找丢失的文件[View Lost];
-e:删除包

准备Hadoop光盘套件

  • 光驱中替换Hanwate HDP套件的光盘,并挂载
# mount /dev/cdrom /mnt/cdrom
  • 配置Hadoop套件的安装仓库/etc/yum.repos.d/hdp.repo
[HDP]
name=HanWate-extras-1.0 #方括号里面的是软件源的名称,将被yum取得并识别
baseurl=file:///mnt/cdrom/HanWate-etras-1.0 #这一行的意思是指定一个baseurl(源的镜像服务器地址)
enabled=1   #这个选项表示这个repo中定义的源是启用的,0为禁用
gpgcheck=1  #这个选项表示这个repo中下载的rpm将进行gpg的校验,已确定rpm包的来源是有效和安全的
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7   #定义用于校验的gpg密钥

安装LSB基础包

  • 安装Redhat-lsb
# yum install -y redhat-lsb

目 前 Linux 的发行版非常繁多,为了促进 Linux 不同发行版间的兼容性,LSB(Linux Standards Base)开发了一系列标准,使各种软件可以很好地在兼容 LSB 标准的系统上运行,从而可以帮助软件供应商更好地在 Linux 系统上开发产品,或将已有的产品移植到 Linux 系统上。

分配主机角色

主机地址组件
master1191.168.x.1NameNode,JobHistoryserver
master2191.168.x.2ResourceManager,SecondaryNameNode
slave1191.168.x.3Datanode,NodeManager
slave2191.168.x.4Datanode,NodeManager
slave3191.168.x.5Datanode,NodeManager

修改主机地址

  • 每台主机各自修改主机IP地址和主机名。
  • 修改网卡配置文件/etc/sysconfig/network-scripts/ifcfg-xxx
BOOTPROTO=none
IPADDR=191.168.x.1
NETMASK=255.255.0.0

xxx指的是网卡名字:
1、前2个字符的含义

en  以太网    Ethernet
wl  无线局域网  WLAN
ww  无线广域网  WWAN
2、第3个字符根据设备类型选择

o on-board device index number
s hotplug slot index number
x MAC address
ps PCI geographical location
ps USB port number chain

  • 主机名配置文件 : /etc/hostname

配置主机名映射

  • 在所有机器上修改/etc/hosts:
191.168.x.1 master1
191.168.x.2 master2
191.168.x.3 slave1
191.168.x.3 slave1
191.168.x.3 slave1

应用配置文件

  • 所有主机同步/etc/hosts
  • 重启服务器
  • 检查主机名和其他节点是否可以访问
# for host in master1 master2 slave1 slave2 slave3
    do 
        ping -c1 $host
    done

hadoop基础依赖软件安装

  • 进入HDP安装目录,安装ranger包
# rpm -ivh ranger/ranger*-yarn-* ranger/ranger*-hdfs-*
  • 安装hdp-select
# rpm -ivh hdp-select/*.rpm
  • 安装zookeeper
# rpm -ivh zookeeper/*.rpm
  • 安装spark shuffle
# rpm -ivh spark/spark*-yarn-shuffle*
# rpm -ivh spark2/spark*-yarn-shuffle*

hadoop核心包安装

  • 安装hadoop 2.7.3
# rpm -ivh hadoop/hadoop_2_6_1_0_129-2.7.3.2.6.1.0-129.x86_64.rpm
  • 安装依赖库
# rpm -ivh bigtop-jsvc/*.rpm
# yum install -y libtirpc-devel
# rpm -ivh hadoop/hadoop_2_6_1_0_129-hdfs-2.7.3.2.6.1.0-129.x86_64.rpm

安装Namenode

  • 以下命令在master1节点操作
# rpm -ivh hadoop/hadoop_2_6_1_0_129-hdfs-namenode-2.7.3.2.6.1.0-129.x86_64.rpm

安装SecondaryNamenode

  • 在master2执行以下操作
# rpm -ivh hadoop/hadoop_2_6_1_0_129-hdfs-secondarynamenode-2.7.3.2.6.1.0-129.x86_64.rpm 

安装Datanade

  • 在所有节点执行以下操作
# rpm -ivh hadoop/hadoop_2_6_1_0_129-hdfs-dataname*

配置集群文件

  • 进入/etc/hadoop/conf/
  • 配置集群core-site.xml
name:fs.defaultFS
value:hdfs://master1:8020
作用:HDFS访问入口
#这个要写成xml文档,格式有模板
  • 配置集群hdfs-site.xml
1.name:dfs.namenode.name.dir
  value:file///disk1/dfs/nn,file:///disk2/dfs/nn
  作用:namenode数据的存放位置,至少两个磁盘目录
2.name:dfs.namenode.data.dir
  value:file///disk1/dfs/dn,file:///disk2/dfs/dn
  作用:datanode数据块存放位置,至少一个

准备数据目录

  • 分别创建 /disk1和disk2 目录
# mkdir /disk1 /disk2
  • 挂在第二块硬盘到/disk2
# moount /dev/sdb1 /disk2
  • 保存到/etc/fstab,实现开机自动挂载
/dev/sdb1 /disk2 ext4 fefaults 0 2

第二块磁盘需要分一个区,然后格式化ext4后挂载:

fdisk /dev/sdb #分区,生成sdb1
mkfs.ext4 /dev/sdb1 #格式化分区

/etc/fstab是用来存放文件系统的静态信息的文件。位于/etc/目录下,可以用命令less /etc/fstab 来查看,如果要修改的话,则用命令 vi /etc/fstab 来修改。
当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。

  • 创建子目录
# mkdir -p /disk{1,2}/dfs/{dn,nn}
  • 修改权限
 # chown -R hdfs.hadoop /disk[12] #用户为hdfs,组为hadoop

初始化hdfs文件系统

  • 在master1上操作
# sudo -u hdfs hdfs namenode -formate

启动服务

  • 首先更改/var下面的run目录权限
# chown hdfs.hadoop /var/run
  • 启动namenode服务,在master1上操作
# ln -s /usr/hdp/2.6.1.0-129/hadoop-hdfs/usr/lib/systemd/system/hadoop-hdfs-namenode.server /usr/lib/systemd/system/
# systemctl start hadoop-hdfs-namenode
  • 启动secondarynamenode服务,在master2操作
# ln -s /usr/hdp/2.6.1.0-129/hadoop-hdfs/usr/lib/systemd/system/hadoop-hdfs-secondarynamenode.server /usr/lib/systemd/system/
# systemctl start hadoop-hdfs-secondarynamenode
  • 启动datanode服务,所有节点操作
# ln -s /usr/hdp/2.6.1.0-129/hadoop-hdfs/usr/lib/systemd/system/hadoop-hdfs-datanode.server /usr/lib/systemd/system/
# systemctl start hadoop-hdfs-datanode

2.用到的知识

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 將以下資料取代掉原本的內容 fs.default.name hdfs://主機一:9000/ mapred.job.tracker 主機一:9001 hadoop.tmp.dir /tmp/hadoop/hadoop-${user.name} 注意! 我們多加了一個參數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、付费专栏及课程。

余额充值