介绍这一系列博文介绍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 ,在行末尾添加 exportJAVA_HOME=/usr/java/jdk1.8.0_25 exportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:/lib/dt.jar exportPATH=$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 修改权限:执行 chmod600 ~/.ssh/authorized_keys 5 若有必要请修改ssh配置文件
6 验证
ssh {#IP} 如果没有需要密码即可 7 注意:要确保任意两台机器都能够通过SSH无密码登陆对方
Hadoop安装 解压目录 tar zxvfhadoop-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 添加 exportHADOOP_HOME=/opt/hadoop-2.6.0 exportPATH=$PATH:$HADOOP_HOME/bin exportPATH=$PATH:$HADOOP_HOME/sbin exportHADOOP_MAPARED_HOME=${HADOOP_HOME} exportHADOOP_COMMON_HOME=${HADOOP_HOME} exportHADOOP_HDFS_HOME=${HADOOP_HOME} exportYARN_HOME=${HADOOP_HOME} exportHADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop exportHDFS_CONF_DIR=${HADOOP_HOME}/etc/hadoop exportYARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop
生效配置: source /etc/profile
进入/etc/hadoop目录中 cd/home/hadoop/hadoop/etc/hadoop
配置hadoop-env.sh vi hadoop-env.sh
在末尾添加 exportJAVA_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看进程是否都已经启动了 [iyunv@hadoop1 hadoop]#jps 27113 ResourceManager 26387 SecondaryNameNode 26075 NameNode 27633 Jps
在datanode上查看
[iyunv@hadoop2 ~]# jps 8966 Jps 31822 DataNode 31935 NodeManager
验证是否可以登陆 hadoop fs -lshdfs://168.5.15.112:9000/ hadoop fs -mkdirhdfs://168.5.15.112:9000/testfolder hadoop fs-copyFromLocal /testfolder hdfs://168.5.15.112:9000/testfolder(前提为本机已创建/testfolder目录) hadoop fs -lshdfs://168.5.15.112:9000/testfolder
验证map/reduce 在master1 上,创建输入目录 : hadoop fs -mkdirhdfs://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 jarhadoop-mapreduce-examples-2.2.0.jar wordcounthdfs://168.5.15.112:9000/input hdfs://168.5.15.112:9000/output
在hadoop1上,查看结果命令如下: [iyunv@master1 hadoop]#hadoop fs -ls hdfs://168.5.15.112:9000/output Found 2 items -rw-r--r-- 2 rootsupergroup 0 2012-06-29 22:59hdfs://168.5.15.112:9000/output/_SUCCESS -rw-r--r-- 2 rootsupergroup 16605 2012-06-29 22:59hdfs://168.5.15.112:9000/output/part-r-00000 [iyunv@hadoop1 hadoop]#hadoop fs -cat hdfs://168.5.15.112:9000/output/part-r-00000即可看到每个单词的数量
|