介绍
这一系列博文介绍hadoop集群的部署和安装,因为hadoop确实比较复杂,所以分为几个部分来一一介绍。大致有基础篇,HA-QJM篇,Federation篇。
正文
一、操作环境
虚拟机4台,配置基于hadoop的集群中包括4个节点:1个Master,3个Salve,节点之间局域网连接,可以相互ping通,Ip分布为:
168.5.15.112 hadoop1(Master)
168.5.15.116 hadoop2(Slave)
168.5.15.207 hadoop3(Slave)
168.5.15.201 hadoop4(Slave)
操作系统为CENTOS/RHEL5.4 64bit
Master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行;3个Salve机器配置DataNode和TaskTracker的角色,负责分布式数据存储以及任务的执行。
创建账户
使用root登陆所有机器后,所有的机器都创建hadoop 用户
useradd hadoop
passwd hadoop
此时在/home/ 下就会生成一个hadoop目录,目录路径为/home/hadoop
使用hadoop用户登录并创建相关的目录
定义安装包存放路径:/opt/
并给与足够的权限:chown 777 /opt
需要两个安装包:JDK和HADOOP安装包,两个都从apache官网上下载。
这里为jdk-8u25-linux-x64.rpm和hadoop-2.6.0.tar.gz,下载后放在/opt目录下,
安装JDK
1 rpm -ivh jdk-8u25-linux-x64.rpm,安装后JDK家目录默认在/usr/java/jdk1.8.0_25
2 配置环境变量,vi /etc/profile ,在行末尾添加
export JAVA_HOME=/usr/java/jdk1.8.0_25
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
3 使配置立即生效
source /etc/profile
4 执行java -version 查看是否安装成功
修改主机名
1 连接到主节点168.5.15.112 ,修改network ,执行 vi /etc/sysconfig/network ,修改HOSTNAME=hadoop1
2 修改hosts 文件,vi /etc/hosts ,在行末尾添加:
168.5.15.112 hadoop1
168.5.15.116 hadoop2
168.5.15.207 hadoop3
168.5.15.201 hadoop4
3 执行hostname hadoop1
4 执行exit 后重新连接可看到主机名以修改OK
其他节点也修改主机名后添加Host, 或者host 文件可以在后面执行scp 覆盖操作
配置SSH无密码登陆
1 以hadoop用户在其中一台机器上执行命令ssh-keygen -t rsa 之后一路回车,
2在其他机器上创建目录:/home/hadoop/.ssh,并修改权限:chmod 700 /home/hadoop/.ssh
3 把~/.ssh/id_rsa.pub 分发到所有机器上(包括自己)
scp ~/.ssh/id_rsa.pub hadoop@{#IP}:~/.ssh/authorized_keys
4 修改权限:执行 chmod 600 ~/.ssh/authorized_keys
5 若有必要请修改ssh配置文件
6 验证
ssh {#IP}
如果没有需要密码即可
7 注意:要确保任意两台机器都能够通过SSH无密码登陆对方
Hadoop安装
下载官网地址:http://www.apache.org/dyn/closer.cgi/hadoop/common/
解压目录
tar zxvf hadoop-2.2.0.tar.gz
创建相应的数据存放目录:
mkdir -p /opt/hadoop-2.6.0/hdfs/name
mkdir -p /opt/hadoop-2.6.0/hdfs/data
mkdir -p /opt/hadoop-2.6.0/logs
mkdir -p /opt/hadoop-2.6.0/tmp
配置环境变量
vi /etc/profile
添加
export HADOOP_HOME=/opt/hadoop-2.6.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPARED_HOME=${HADOOP_HOME}
export HADOOP_COMMON_HOME=${HADOOP_HOME}
export HADOOP_HDFS_HOME=${HADOOP_HOME}
export YARN_HOME=${HADOOP_HOME}
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HDFS_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop
生效配置:
source /etc/profile
进入/etc/hadoop目录中
cd/home/hadoop/hadoop/etc/hadoop
配置hadoop-env.sh
vi hadoop-env.sh
在末尾添加
export JAVA_HOME=/usr/java/jdk1.8.0_25
slave配置
vi slaves
添加slave 的IP
168.5.15.116
168.5.15.201
168.5.15.207
编辑core-site.xml
vi core-site.xml
在configuration 节点里面添加属性
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-2.6.0/tmp</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://10.9.214.151:9000</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>10.9.214.151</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
配置hdfs-site.xml
vi hdfs-site.xml
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hadoop-2.6.0/hdfs/name</value>
</property>
<property>
<name>dfs.dataname.data.dir</name>
<value>file:/opt/hadoop-2.6.0/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
配置yarn-site.xml
<property>
<name>yarn.resourcemanager.address</name>
<value>10.9.214.151:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>10.9.214.151:18030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>10.9.214.151:18088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>10.9.214.151:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>10.9.214.151:18141</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
配置mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>http://10.9.214.151:9001</value>
</property>
在一台机器上配置好后,把以下文件同步到其他机器:
/etc/profile,/etc/hosts,hadoop-env.sh,core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml
Hadoop启动
1 格式化集群,以下用hadoop用户执行
hadoop namenode -format
2 启动hdfs
执行
start-dfs.sh
开启hadoop dfs服务
3 启动Yarn
开启yarn 资源管理服务
start-yarn.sh
4 验证hdfs
在namenode上执行jps看进程是否都已经启动了
[root@hadoop1 hadoop]# jps
27113 ResourceManager
26387 SecondaryNameNode
26075 NameNode
27633 Jps
在datanode上查看
[root@hadoop2 ~]# jps
8966 Jps
31822 DataNode
31935 NodeManager
验证是否可以登陆
hadoop fs -ls hdfs://168.5.15.112:9000/
hadoop fs -mkdir hdfs://168.5.15.112:9000/testfolder
hadoop fs -copyFromLocal /testfolder hdfs://168.5.15.112:9000/testfolder(前提为本机已创建/testfolder目录)
hadoop fs -ls hdfs://168.5.15.112:9000/testfolder
验证map/reduce
在master1 上,创建输入目录 :
hadoop fs -mkdir hdfs://168.5.15.112:9000/input
将一些txt文件复制到hdfs 分布式文件系统的目录里,执行以下命令
hadoop fs -put /test/*.txt hdfs://168.5.15.112:9000/input
在hadoop1 上,执行 HADOOP自带的例子,wordcount包,命令如下
cd $HADOOP_HOME/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.2.0.jar wordcount hdfs://168.5.15.112:9000/input hdfs://168.5.15.112:9000/output
在hadoop1上,查看结果命令如下:
[root@master1 hadoop]# hadoop fs -ls hdfs://168.5.15.112:9000/output
Found 2 items
-rw-r--r-- 2 root supergroup 0 2012-06-29 22:59 hdfs://168.5.15.112:9000/output/_SUCCESS
-rw-r--r-- 2 root supergroup 16605 2012-06-29 22:59 hdfs://168.5.15.112:9000/output/part-r-00000
[root@hadoop1 hadoop]# hadoop fs -cat hdfs://168.5.15.112:9000/output/part-r-00000即可看到每个单词的数量
本文出自 “Linux运维” 博客,转载请与作者联系!