ubuntu14.04下hadoop2.2.0集群安装
1、系统配置以及安装SSH无密码登陆环境(master&slaves):
修改本机(master)和子节点(slaveN)机器名:打开/etc/hostname文件
sudo gedit/etc/hostname
(修改后需重启才能生效)
修改host文件(映射各个节点IP):
sudogedit /etc/hosts
注意:这里要注释掉开头两行
在后面添加内容为:
192.168.1.223 master
192.168.1.193 slave1
192.168.1.142 slave2 (注意修改为本机IP)
(master、slave1、slave2分别是主节点和子节点的机器名,即hostname里的内容)
为主节点(master)和子节点(slave)分别创建hadoop用户和用户组:
先创建hadoop用户组:
sudo addgrouphadoop
然后创建hadoop用户:
sudoadduser -ingroup hadoop hadoop
(第一个hadoop是hadoop用户组,第二个hadoop指用户名)
给hadoop用户赋予root用户同样的权限,打开/etc/sudoers文件(目的:给hadoop用户sudo权限)
sudo gedit/etc/sudoers
在root ALL=(ALL:ALL) ALL这一行下添加
hadoop ALL=(ALL:ALL)ALL
本机(master)和子节点(slave)安装ssh服务:
sudo apt-get update
sudo apt-get install ssh openssh-server
建立ssh无密码登录环境:
进入新建立的hadoop用户,建议注销当前用户,然后选择hadoop用户
ssh生成密钥有rsa和dsa两种生成方式,默认情况下采用rsa方式
创建ssh-key,这里我们采用rsa方式,在终端/home/hadoop目录下输入:
ssh-keygen -t rsa
(有确认信息直接回车)
进入~/.ssh/目录下:
cd /home/hadoop/.ssh
将此目录下的id_rsa.pub追加到authorized_keys授权文件中:
cat id_rsa.pub >> authorized_keys (仅master执行)
将master节点上的rsa.pub通过ssh传到子节点上(目的:公用公钥密钥)X代表第n个结点
scp ~/.ssh/id_rsa.pub hadoop @slaveX:~/.ssh/
进入~/.ssh/目录下,将id_rsa.pub追加到authorized_keys授权文件中
cd /home/hadoop/.ssh
cat id_rsa.pub >> authorized_keys
测试ssh互信是否建立
ssh hadoop@slave1
(如果不需要输入密码就可以登录成功则表示ssh互信已经建立)
2、为本机(master)和子节点(slave)安装JDK环境:
直接用命令sudo apt-get install openjdk-7-jdk
也可到官网下载jdk压缩包手动安装。
要验证下 Java 是否已经完全安装的话,可以运行下面的命令来测试。
java –version
(如果出现jdk的版本信息,则java环境变量配置成功)
3、安装hadoop及配置(只需master配置即可,子结点可以直接复制过去)
3.1.假设hadoop-2.2.0.tar.gz在/home/hadoop/Downloads目录,先进入此目录
cd /home/hadoop/Downloads
3.2. 解压hadoop-2.2.0.tar.gz
sudo tar -zxf hadoop-2.2.0.tar.gz
3.3. 将解压出的文件夹改名为hadoop;
sudo mv hadoop-2.2.0 hadoop
3.4. 将该hadoop文件夹的属主用户设为hadoop
sudo chown -R hadoop:hadoop hadoop
3.5, 将hadoop文件夹移动到/usr/local/ 目录下
sudo mv hadoop/usr/local/
3.6 hadoop配置过程
配置之前,需要在master本地文件系统创建以下文件夹:
sudo mkdir/usr/local/hadoop/dfs/name
sudo mkdir/usr/local/hadoop/dfs/data
sudo mkdir/usr/local/hadoop/tmp
需要配置的文件一共有7个。
/usr/local/hadoop/etc/hadoop/hadoop-env.sh/usr/local/hadoop /etc/hadoop/yarn-env.sh
/usr/local/hadoop/etc/hadoop/slaves
/usr/local/hadoop/etc/hadoop/core-site.xml
/usr/local/hadoop/etc/hadoop/hdfs-site.xml/usr/local/hadoop /etc/hadoop/mapred-site.xml
/usr/local/hadoop/etc/hadoop/yarn-site.xml 以上有些文件默认不存在的,可以复制相应的template文件获得。
配置文件1:hadoop-env.sh
修改JAVA_HOME值(export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_40)
(通过命令 update-alternatives --config java 查看jdk安装路径)
配置文件2:yarn-env.sh
修改JAVA_HOME值(exportJAVA_HOME=/usr/java/jdk1.7.0_40)
)
配置文件3:slaves
(这个文件里面保存所有slave节点)
配置文件4:hdfs-site
<configuration>
<!--
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
因为默认的secondarynode是在master上,现在把他更改为slave1.所以注释这个属性节点,添加以下两个属性节点
-->
<property>
<name>dfs.http.address</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
</configuration>
配置文件5:core-site
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>fs.checkpoint.period</name>
<value>60</value>
</property>
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporarydirectories.</description>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
</configuration>
配置文件6:mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value>
</property>
</configuration>
配置文件7:yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
<description>shuffle service that needs to be set for Map Reduceto run </description>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
####
配置文件8: master (将secondarynode移动到slave1时配置。需要新建)。
可参考文章http://www.cnblogs.com/Richardzhu/p/3435568.html
将配置信息复制到子节点上
hosts文件的复制,先将文件复制到/home/hadoop下面:
sudo scp /etc/hosts hadoop@ slaveX:/home/hadoop
再在datanode机器上将其移到相同的路径下面/etc/hosts
sudo mv /home/hadoop/hosts /etc/hosts ( 这条命令在子节点上执行)
hadoop文件夹的复制,其中的配置也就一起复制过来了!
scp -r /usr/local/hadoophadoop@ slaveX :/home/hadoop
然后在子节点上执行
sudo mv /home/local/hadoop /usr/local/
(如果提示是移动文件夹,则加上-r参数)
并且要将所有节点的hadoop的目录的权限进行如下的修改:
sudo chown -R hadoop:hadoop hadoop
(在/usr/local/目录下执行此命令)
配置完成
3.7启动测试
首先终端进入/usr/local/hadoop/目录下
bin/hdfsnamenode -format (格式化集群)
sbin/start-all.sh
连接时可以在namenode上查看连接情况:
bin/hdfs dfsadmin –report
(注意这里是在/usr/local/hadoop下)
结果如图:
也可以直接进入网址: