`

1 Hadoop集群环境搭建

阅读更多

Hadoop集群环境搭建

1、准备资料

虚拟机、Redhat6.5hadoop-1.0.3jdk1.6

2、基础环境设置

2.1配置机器时间同步

#配置时间自动同步

crontab -e

0 1 * * * root /usr/sbin/ntpdate cn.pool.ntp.org

 

 

#手动同步时间

/usr/sbin/ntpdate cn.pool.ntp.org

2.2配置机器网络环境

   #配置主机名 (hostname)

   vi /etc/sysconfig/network

NETWORKING=yes #启动网络

NETWORKING_IPV6=no

HOSTNAME=master  #主机名

 

 



 

#修第一台 hostname master

hostname master

 

#检测

hostname

 

#使用 setup 命令配置系统环境

setup

   说明: setup

 

   说明: setup1 

 

        说明: setup2

 

#检查ip配置

cat /etc/sysconfig/network-scripts/ifcfg-eth0   

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]

DEVICE=eth0

BOOTPROTO=none

HWADDR=00:0c:29:fc:3a:09

ONBOOT=yes

NETMASK=255.255.255.0

IPADDR=192.168.1.100

TYPE=Ethernet

   

 

     

 

 

 

 

 

 

#重新启动网络服务

/sbin/service network restart

#检查网络ip配置

/sbin/ifconfig 

2.3关闭防火墙

 

说明: fire1

 

说明: setup2

 

2.4配置集群hosts列表

vi /etc/hosts

#添加一下内容到 vi

192.168.1.100 master

192.168.1.101 node1 #全分布式用到

192.168.1.101 node2  #全分布式用到

 

 

 

 

 

 

2.5创建用户账号和Hadoop部署目录和数据目录

#创建 hadoop 用户

/usr/sbin/groupadd hadoop

 

#分配 hadoop hadoop 组中

/usr/sbin/useradd hadoop -g hadoop

#修改hadoop用户密码

Passwd hadoop

#创建 hadoop 代码目录结构

mkdir -p /opt/modules/hadoop/

#修改 目录结构权限拥有者为为hadoop

chown -R hadoop:hadoop  /opt/modules/hadoop/

 

2.6生成登陆密钥

#切换到Hadoop 用户下

su hadoop

cd /home/hadoop/

 

#masternode1node2三台机器上都执行下面命令, 生成公钥和私钥

ssh-keygen -q -t rsa -N "" -f /home/hadoop/.ssh/id_rsa

cd  /home/hadoop/.ssh

#node1node2上的公钥拷贝到master

scp /home/hadoop/.ssh/ id_rsa.pub  hadoop@master:/home/hadoop/.ssh/node1_pubkey

scp /home/hadoop/.ssh/ id_rsa.pub  hadoop@master:/home/hadoop/.ssh/node2_pubkey

 

#master上生成三台机器的共钥

cp id_rsa.pub authorized_keys

cat node1_pubkey >> authorized_keys

cat node2_pubkey >> authorized_keys

rm node1_pubkey node2_pubkey

#master上的共钥拷贝到其他两个节点上

scp authorized_keys node1: /home/hadoop/.ssh/

scp authorized_keys node1: /home/hadoop/.ssh/

 

#验证

ssh master

ssh node1

ssh node2

没有要求输入密码登陆,表示免密码登陆成功

3、伪分布式环境搭建

3.1下载并安装 JAVA JDK系统软件

#下载jdk

wget http://60.28.110.228/source/package/jdk-6u21-linux-i586-rpm.bin

#安装jdk

chmod +x  jdk-6u21-linux-i586-rpm.bin

./jdk-6u21-linux-i586-rpm.bin

#配置环境变量

vi /etc/profile.d/java.sh

export JAVA_HOME=/usr/java/jdk1.6.0_21/

export PATH=$JAVA_HOME/bin: $PATH

 

 

 

 

 

#手动立即生效

source /etc/profile

 

3.2 Hadoop 文件下载和安装

#切到 hadoop 安装路径下

cd /opt/modules/hadoop/

 

# hadoop.apache.org 下载Hadoop 安装文件

wget http://labs.renren.com/apache-mirror/hadoop/common/hadoop-1.0.3/hadoop-1.0.3.tar.gz

 

#如果已经下载,请复制文件到 安装hadoop 文件夹

cp hadoop-1.0.3.tar.gz  /opt/modules/hadoop/

 

#解压hadoop-1.0.3.tar.gz

cd /opt/modules/hadoop/

tar -xvf hadoop-1.0.3.tar.gz

 

#配置环境变量

vi /etc/profile.d/java.sh

export JAVA_HOME=/usr/java/jdk1.6.0_21/

export HADOOP_HOME=/opt/modules/hadoop/hadoop-1.0.3/

export HADOOP_HOME_WARN_SUPPRESS=1

export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH

 

 

 

 

 

#手动立即生效

source /etc/profile

3.3配置 hadoop-env.sh 环境变量

#配置jdk

# The java implementation to use.  Required.

 export JAVA_HOME=/usr/java/jdk1.6.0_21/

 

3.4 Hadoop Common组件 配置 core-site.xml

#编辑 core-site.xml 文件

vi /opt/modules/hadoop/hadoop-1.0.3/conf/core-site.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

 

<!-- Put site-specific property overrides in this file. -->

 

<configuration>

  <property>

         <name>fs.default.name</name>

         <value>hdfs://master:9000</value>

         <description>hadoop namenode 服务器地址和端口,以域名形式</description>

  </property>

</configuration>

 

3.5 HDFS NameNode,DataNode组建配置 hdfs-site.xml

vi /opt/modules/hadoop/hadoop-1.0.3/conf/hdfs-site.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

 

<!-- Put site-specific property overrides in this file. -->

 

<configuration>

  <property>

       <name>dfs.replication</name>

       <value>2</value>

       <description>HDFS数据保存份数,通常是3 </description>

  </property>

</configuration>

3.6 配置MapReduce - JobTracker TaskTracker 启动配置

vi /opt/modules/hadoop/hadoop-1.0.3/conf/mapred-site.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

 

<!-- Put site-specific property overrides in this file. -->

 

<configuration>

  <property>

         <name>mapred.job.tracker</name>

         <value>master:9001</value>

         <description>JobTracker rpc主机和端口</description>

  </property>

</configuration>

 

3.7格式化文件

#启动切换到hadoop用户

su hadoop

#格式化文件

/opt/modules/hadoop/hadoop-1.0.3/bin/hadoop namenode -format

 

3.8 Hadoop单机系统,启动执行和异常检查

#启动 Master node

/opt/modules/hadoop/hadoop-1.0.3/bin/hadoop-daemon.sh start namenode

 

#启动 JobTracker

/opt/modules/hadoop/hadoop-1.0.3/bin/hadoop-daemon.sh start jobtracker

 

#启动 secondarynamenode

/opt/modules/hadoop/hadoop-1.0.3/bin/hadoop-daemon.sh start secondarynamenode

 

#启动 DataNode && TaskTracker

 

/opt/modules/hadoop/hadoop-1.0.3/bin/hadoop-daemon.sh start datanode

/opt/modules/hadoop/hadoop-1.0.3/bin/hadoop-daemon.sh start tasktracker

 

停止,命令相同,将start换为stop

 

#出现错误可查看日志

tail -f /opt/modules/hadoop/hadoop-1.0.3/logs/*

 

#jps列出所有守护进程验证安装成功

 

3.9 通过界面查看集群部署部署成功

#检查 namenode datanode 是否正常

http://master:50070/

 

1

 

 

#检查 jobtracker tasktracker 是否正常

http://master:50030/

 

1

 

 

3.10 通过执行 Hadoop pi 运行样例检查集群是否成功

cd /opt/modules/hadoop/hadoop-1.0.3

bin/hadoop jar hadoop-examples-1.0.3.jar pi 10 100

 

#集群正常效果如下

12/07/15 10:50:48 INFO mapred.FileInputFormat: Total input paths to process : 10

12/07/15 10:50:48 INFO mapred.JobClient: Running job: job_201207151041_0001

12/07/15 10:50:49 INFO mapred.JobClient:  map 0% reduce 0%

12/07/15 10:51:42 INFO mapred.JobClient:  map 40% reduce 0%

12/07/15 10:52:07 INFO mapred.JobClient:  map 70% reduce 13%

12/07/15 10:52:10 INFO mapred.JobClient:  map 80% reduce 16%

12/07/15 10:52:11 INFO mapred.JobClient:  map 90% reduce 16%

12/07/15 10:52:22 INFO mapred.JobClient:  map 100% reduce 100%

.....................

12/07/15 10:52:28 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=2155343872

12/07/15 10:52:28 INFO mapred.JobClient:     Map output records=20

Job Finished in 100.608 seconds

Estimated value of Pi is 3.14800000000000000000

 

3.11 安装部署 常见错误

主机文件/etc/hosts中主机列表IP错误。物理硬盘的权限均应为hadoop:hadoop,执行启动也应suhadoop用户。比较常见是出现权限错误导致无法启动故障。

如果遇到服务无法启动。请检查 $HADOOP_HOME/logs/ 目录具体日志情况。

 

tail -n 100 $HADOOP_HOME/logs/*namenode*  #检查namenode 服务日志

tail -n 100 $HADOOP_HOME/logs/*datanode*   #检查datanode服务日志

Tail -n 100 $HADOOP_HOME/logs/*jobtracker*   #检查jobtracker服务日志

4、全分布式环境搭建

4.1 配置master 集群服务器地址 stop-all.sh start-all.sh 的时候调用

#设置 hadoop secondary node hostname批量启动的地址

 

#配置secondary的地址

vi /opt/modules/hadoop/hadoop-1.0.3/conf/masters

master

 

#配置 datanode tasktracker 的地址

vi /opt/modules/hadoop/hadoop-1.0.3/conf/slaves

node1

node2

 

4.2复制 master hadoop node1 node2节点服务器上

#切换到 hadoop 用户下

su hadoop

 

scp -r /opt/modules/hadoop/hadoop-1.0.3/   node1:/opt/modules/hadoop/

scp -r /opt/modules/hadoop/hadoop-1.0.3/   node1:/opt/modules/hadoop/

 

4.3 格式化node1 node2 上的HDFS文件系统

hadoop namenode –format

4.4 批量启动和关闭集群

#全部启动

/opt/modules/hadoop/hadoop-1.0.3/bin/start-all.sh

 

#全部关闭

/opt/modules/hadoop/hadoop-1.0.3/bin/stop-all.sh

4.5 通过界面查看集群部署部署成功

#检查 namenode datanode 是否正常

http://master:50070/

 

#检查 jobtracker tasktracker 是否正常

http://master:50030/

 

hadoop fs -ls /

hadoop fs -mkdir /data/

5 自动化安装脚本

为加快服务器集群的安装和部署,会使用自动化安装脚本安装。以下为自动化部署脚本样例 。脚本中#红色部分具体参考以上配置做具体修改。本脚本里面的安装包用于 64位服务器安装,32位安装包需要单独下载修改。

5.1 master 服务器自动安装脚本

#hadoop_install.sh,将以下放入shell脚本中并执行。

vi hadoop_install.sh

#!/bin/sh

yum -y install lrzsz gcc gcc-c++ libstdc++-devel ntp  #安装gcc 基础环境

echo "0 1 * * * root /usr/sbin/ntpdate cn.pool.ntp.org" >> /etc/crontab  #配置时间同步

/usr/sbin/ntpdate cn.pool.ntp.org #手动同步时间

/usr/sbin/groupadd hadoop #新增hadoop 群组

/usr/sbin/useradd hadoop -g hadoop #新增Hadoop 用户并绑定到hadoop 群中

 

#安装依赖包并设置hadoop用户

mkdir -p /opt/modules/hadoop/

mkdir -p /opt/data/hadoop/

chown hadoop:hadoop /opt/data/hadoop/

 

#配置 /etc/hosts ip 对应主机名称

echo -e "127.0.0.1\tlocalhost.localdomain localhost

#::1\tlocalhost6.localdomain6 localhost6

#机架1

192.168.1.100\thadoopmaster

192.168.1.101\thadoopslave

192.168.1.101\thadoop-node-101

" > /etc/hosts

 

#获取服务器外网IP并替换host127.0.0.1 collect-*

IP=`/sbin/ifconfig eth0 | grep "inet addr" | awk -F":" '{print $2}' | awk -F" " '{print $1}'`

sed -i "s/^127.0.0.1\tcollect/${IP}\tcollect/g" /etc/hosts

 

echo "----------------env init finish and prepare su hadoop---------------"

 

HADOOP=/home/hadoop

 

cd $HADOOP

 

#生成密钥

sudo -u hadoop mkdir .ssh

ssh-keygen -q -t rsa -N "" -f $HADOOP/.ssh/id_rsa

Cd$HADOOP/.ssh/ && echo "#此处需要 cat master id_rsa.pub" > $HADOOP/.ssh/authorized_keys

chmod go-rwx $HADOOP/.ssh/authorized_keys #修改文件权限

 

cd $HADOOP

 

#下载已经配置好的 Hadoop 集群包

wget http://60.28.110.228/source/package/hadoop/hadoop_gz.tar.gz

wget http://60.28.110.228/source/package/hadoop/hadoop_rpm.tar.gz

 

mkdir $HADOOP/hadoop

mv *.tar.gz $HADOOP/hadoop

cd $HADOOP/hadoop

tar zxvf hadoop_rpm.tar.gz

tar zxvf hadoop_gz.tar.gz

 

rpm -ivh jdk-6u21-linux-amd64.rpm

rpm -ivh lrzsz-0.12.20-19.x86_64.rpm

rpm -ivh lzo-2.04-1.el5.rf.x86_64.rpm

rpm -ivh hadoop-gpl-packaging-0.2.8-1.x86_64.rpm

 

tar xzvf lzo-2.06.tar.gz

cd lzo-2.06 && ./configure --enable-shared && make && make install

cp /usr/local/lib/liblzo2.* /usr/lib/

cd ..

 

tar xzvf  lzop-1.03.tar.gz

cd lzop-1.03

./configure && make && make install && cd ..

 

chown -R hadoop:hadoop  /opt/modules/hadoop/

 

cp hadoop-node-0.20.203.0.tar.gz /opt/modules/hadoop/

cd /opt/modules/hadoop/ && tar -xzvf hadoop-node-0.20.203.0.tar.gz

 

chown -R hadoop:hadoop /opt/modules/hadoop/

chown -R hadoop:hadoop /home/hadoop

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics