一、集群环境及安装:
1.1 集群环境
- 系统: Ubuntu Kylin 14.04 LTS
- Hadoop版本:Apache Hadoop-2.6.0
节点类型 |
网络地址 |
机器名 |
配置信息 |
Master |
192.168.0.100 |
master |
CPU:4核,内存:8G |
Backup&Slave |
192.168.0.99 |
backup |
CPU:4核,内存:8G |
Slave |
192.168.0.101 |
datanode1 |
CPU:2核,内存:4G |
Slave |
192.168.0.102 |
datanode2 |
CPU:4核,内存:4G |
Slave |
192.168.0.103 |
datanode3 |
CPU:2核,内存:4G |
Slave |
192.168.0.104 |
datanode4 |
CPU:4核,内存:4G |
1.2 集群系统安装
1)首先使用U盘启动盘将Ubuntu Kylin系统直接安装到硬盘上,安装时SWAP分区大小设置为内存大小,即master/backup的swap为8192M,其余节点为4096M,并且设置合适的硬盘分区大小挂载到“/”路径下。
2)在安装过程中,可以设置用户名、机器名等。如果在该步骤中设置,可跳至步骤4。
3)创建hadoop用户组和用户:
$ sudo addgroup hadoop //创建hadoop用户组
$ sudo adduser -ingroup hadoop hadoop //创建hadoop用户
4)给hadoop用户添加权限:
$ sudo gedit /etc/sudoers //打开/etc/sudoers文件
给hadoop用户赋予root用户同样的权限。在root ALL=(ALL:ALL) ALL下添加: hadoop ALL=(ALL:ALL) ALL
二、安装JDK
2.1 配置环境变量
2.1.1 解压JDK
$ sudo mkdir /usr/lib/jvm
$ sudo tar zxvf jdk-8u05-linuxX64.tar.gz /usr/lib/jvm
2.1.2 添加环境变量
$ sudo gedit /etc/profile
在文件的末尾加上如下内容,保存并关闭文件
# for java export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_05 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH
使设置生效:
$ gedit ~/.bashrc
在文件最后加上: source /etc/profile, 保存并退出。
2.2 修改默认JDK
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_05/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_05/bin/javac 300
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.8.0_05/bin/jar 300
然后执行:
sudo update-alternatives --config java
若是初次安装 JDK,将提示
There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java/bin/java
无需配置。
最后进行简单的测试:$ java –version
若出现:
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
则表示JDK的配置已经完成。
三、ssh与免密码登陆
3.1 安装openssh-server:
$ sudo apt-get install ssh openssh-server
3.2 ssh无密码登录本机
首先要转换成hadoop用户,执行以下命令:
$ sudo su - hadoop
采用rsa方式创建ssh-key
$ ssh-keygen -t rsa -P "" (直接回车生成的密钥对:id_rsa和id_rsa.pub,默认存储)
2. 创建授权文件authorized_keys,复制 id_rsa.pub 为 authorized_keys
$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
3. 登录localhost;
$ ssh localhost
4. 执行退出命令(exit或CTRL+D);
权限要求:hadoop目录 755,.ssh目录700,authorized_key文件600
3.3 ssh无密码登录集群
3.2.1 配置hosts文件
在每台机器上都完成3.2步骤,然后修改每台机器的hosts文件:
$ sudo gedit /etc/hosts
修改后的/etc/hosts文件如下:
127.0.0.1 localhost 192.168.0.99 backup 192.168.0.100 master 192.168.0.101 datanode1 192.168.0.102 datanode2 192.168.0.103 datanode3 192.168.0.104 datanode4
3.2.2 追加授权
将master在3.2 步骤中生成的.ssh文件夹分发至集群每一台机器:
$ scp –r ~/.ssh hostname:/home/hadoop
权限要求:hadoop目录 755,.ssh目录700,authorized_key文件600
至此,集群内任意两台机器可以免密码登陆。
问题集:
1、Agent admitted failure to sign using the key
解决方法:在当前用户下执行命令:ssh-add
四、安装hadoop
4,1安装Hadoop
1)解压Hadoop至用户目录:
$ sudo tar zxvf hadoop-2.6.0.tar.gz
2)配置HADOOP_HOME
$ sudo gedit /etc/profile:
export HADOOP_HOME=/home/hadoop/hadoop-2.6.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
4.2 配置Hadoop集群
1)hadoop-env.sh
增加:export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_05
2)编辑配置文件core-site.xml
3)编辑配置文件hdfs-site.xml
4)编辑配置文件mapred-site.xml
<configuration> <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> </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:8035</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>
masters文件:主节点master,
slaves文件:数据节点,一行一个。
运行hadoop
1. 进入hadoop目录下,格式化hdfs文件系统,初次运行hadoop时一定要有该操作,
$ cd ~./Hadoop-yarn
$ bin/hadoop namenode -format
2. 启动sbin/start-all.sh
$ sbin/start-all.sh //关闭:同目录下./stop-all.sh
3. Web查看
http://localhost:50070 集群概况
http://localhost:8088 集群任务
五、服务端配置
修改文件副本数和block大小。
1) 指定连接超时大小:(core-site.xml)
3) 指定block大小(1M):(hdfs-site.xml)
服务端程序通过读取SRC文件夹下的hadoop配置文件来读取配置信息:
在编写应用程序时,需要将配置文件添加到应用程序的classpath中,或者通过以下方法手动读取下配置文件就可以了。
conf.addResource(new Path("/usr/local/hadoop/conf/hdfs-site.xml"));
运行hadoop自带的wordcount程序
1、通过hadoop的命令在HDFS上创建/tmp/workcount目录,命令如下:bin/hadoop fs -mkdir /tmp/wordcount
2、通过copyFromLocal命令把本地的word.txt复制到HDFS上,命令如下:bin/hadoop fs -copyFromLocal /home/grid/word.txt /tmp/wordcount/word.txt
3、通过命令运行例子,使用命令如下:bin/hadoop jar hadoop-examples-0.20.203.0.jar wordcount /tmp/wordcount/word.txt /tmp/wordcount/out
4、查看运行结果,使用命令: bin/hadoop fs -ls /tmp/wordcount/out查看例子的输出结果,发现有两个文件夹和一个文件,使用命令查看part-r-00000文件, bin/hadoop fs -cat /tmp/wordcount/out/part-r-00000可以查看运行结果。
注意:如果出现java.net.NoRouteToHostException: No route to host,关闭防火墙
/etc/init.d/iptables stop