初入hadoop,个人备忘,如有错误,请见谅!
###准备
虚拟机:安装3个centos7.0系统,连接方式为桥接,IP为161(主机),162(从机),163(从机)
JDK:jdk-8u45
Hadoop版本:hadoop-2.7.2
安装虚拟机配置的方法见我之前发的另一篇博客http://blog.csdn.net/u013894072/article/details/51915190。
安装JDK:
cd 到 jdk安装包的目录下
yum install -y 安装包名称
安装完成后:echo $JAVA_HOME看一看 没有出现,最后发现安装到了/usr/java/jdk1.8.0_45/下了。
接着,vi /etc/profile
添加
export
JAVA_HOME=/usr/java/jdk1.8.0_45
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH
=$JAVA_HOME/bin:$PATH
###安装步骤
1)配置/etc/hosts文件
2)建立hadoop运行的账号
3)ssh配置免密码登陆
4)解压hadoop安装包,并配置namenode,修改配置文件
5)把配置好的文件发给其余机器节点
6)格式化namenode
7)启动hadoop并检测
8)利用浏览器观察集群的状态
下面就进入主题:
####(1)配置/etc/hosts文件,在其中追加(三个节点都需要这么配置)
10.10.8.161 nn1
10.10.8.162 dn1
10.10.8.163 dn2
配置之后重启,就会发现自己的命令行中的localhost变成了 nn1这些字符。如果集群很多的话,配置起来还是很麻烦的。
####(2)建立hadoop运行的账号
每个节点上建立hadoop用户组,在里面建立一个账号进行hadoop管理
[root@nn1 usr]# sudo groupadd hadoop
[root@nn1 usr]# sudo useradd -s /bin/bash -d /home/lihao -m lihao -g hadoop -G root
[root@nn1 usr]# sudo passwd lihao
更改用户 lihao 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@nn1 usr]#
其中groupadd是添加用户组hadoop
useradd 添加用户:
-s Shell文件 指定用户的登录Shell
-d -m 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
-g 用户组 指定用户所属的用户组
-G 用户组 指定用户所属的附加组
这三个节点设置了同一个用户名和密码,然后切换到该用户名登陆。
####(3)配置ssh免密码登陆
切换到用户主目录下
cd ~
主机中输入:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
出现:
Generating public/private dsa key pair.
Created directory '/home/lihao/.ssh'.
Your identification has been saved in /home/lihao/.ssh/id_dsa.
Your public key has been saved in /home/lihao/.ssh/id_dsa.pub.
The key fingerprint is:
8a:5c:1e:64:62:88:f5:86:30:ec:c7:73:e5:c9:5d:98 lihao@nn1
The key's randomart image is:
+--[ DSA 1024]----+
|+ . o |
| * + . E . |
|o + = * o . |
| . * = + . |
| . o o S |
| . + o |
| o |
| |
| |
+-----------------+
即为成功
然后输入:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
在本机进行试验 测试登陆
-# ssh localhost
然后把其他节点运行
ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa
讲主机中的authorized_keys 发送到从机上去
scp ~/.ssh/authorized_keys lihao@dn1:~/.ssh/
scp ~/.ssh/authorized_keys lihao@dn2:~/.ssh/
按照提示操作,然后分别再输入代码验证
ssh dn1
ssh dn2
可以看到直接登录到了dn1和dn2上。
####(4)解压Hadoop文件包
在主机上解压文件到用户目录下,并进入配置目录
tar -zxvf hadoop-2.7.2.tar,gz -C /home/lihao/
mv hadoop-2.7.2 hadoop
cd hadoop/etc/hadoop/
ll
总用量 152K
-rw-r--r-- 1 lihao hadoop 4.4K 1月 26 2016 capacity-scheduler.xml
-rw-r--r-- 1 lihao hadoop 1.4K 1月 26 2016 configuration.xsl
-rw-r--r-- 1 lihao hadoop 318 1月 26 2016 container-executor.cfg
-rw-r--r-- 1 lihao hadoop 774 1月 26 2016 core-site.xml
-rw-r--r-- 1 lihao hadoop 3.6K 1月 26 2016 hadoop-env.cmd
-rw-r--r-- 1 lihao hadoop 4.2K 1月 26 2016 hadoop-env.sh
-rw-r--r-- 1 lihao hadoop 2.6K 1月 26 2016 hadoop-metrics2.properties
-rw-r--r-- 1 lihao hadoop 2.5K 1月 26 2016 hadoop-metrics.properties
-rw-r--r-- 1 lihao hadoop 9.5K 1月 26 2016 hadoop-policy.xml
-rw-r--r-- 1 lihao hadoop 775 1月 26 2016 hdfs-site.xml
-rw-r--r-- 1 lihao hadoop 1.5K 1月 26 2016 httpfs-env.sh
-rw-r--r-- 1 lihao hadoop 1.7K 1月 26 2016 httpfs-log4j.properties
-rw-r--r-- 1 lihao hadoop 21 1月 26 2016 httpfs-signature.secret
-rw-r--r-- 1 lihao hadoop 620 1月 26 2016 httpfs-site.xml
-rw-r--r-- 1 lihao hadoop 3.5K 1月 26 2016 kms-acls.xml
-rw-r--r-- 1 lihao hadoop 1.5K 1月 26 2016 kms-env.sh
-rw-r--r-- 1 lihao hadoop 1.6K 1月 26 2016 kms-log4j.properties
-rw-r--r-- 1 lihao hadoop 5.4K 1月 26 2016 kms-site.xml
-rw-r--r-- 1 lihao hadoop 11K 1月 26 2016 log4j.properties
-rw-r--r-- 1 lihao hadoop 951 1月 26 2016 mapred-env.cmd
-rw-r--r-- 1 lihao hadoop 1.4K 1月 26 2016 mapred-env.sh
-rw-r--r-- 1 lihao hadoop 4.1K 1月 26 2016 mapred-queues.xml.template
-rw-r--r-- 1 lihao hadoop 758 1月 26 2016 mapred-site.xml.template
-rw-r--r-- 1 lihao hadoop 10 1月 26 2016 slaves
-rw-r--r-- 1 lihao hadoop 2.3K 1月 26 2016 ssl-client.xml.example
-rw-r--r-- 1 lihao hadoop 2.3K 1月 26 2016 ssl-server.xml.example
-rw-r--r-- 1 lihao hadoop 2.2K 1月 26 2016 yarn-env.cmd
-rw-r--r-- 1 lihao hadoop 4.5K 1月 26 2016 yarn-env.sh
-rw-r--r-- 1 lihao hadoop 690 1月 26 2016 yarn-site.xml
按照目录一个一个来修改
1.配置hadoop-env.sh,其中有一项为
export JAVA_HOME=${JAVA_HOME}
必须改为绝对路径为
export JAVA_HOME=/usr/java/dsd.某个版本(这里加上自己的jdk路径)
####配置core-site.xml
这是Hadoop Core的配置项,例如HDFS和MapReduce常用的I/O设置等。
进行全分布式配置
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://nn1:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/lihao/hadoop/tmp</value>
</property>
</configuration>
fs.defaultFS是在Hadoop版本2.X后取代了fs.default.name,但是看网上的资料说是用pig时还会遇到一些小问题,这个标记下,以后看一看。
hadoop访问文件的IO操作都需要通过代码库。因此,在很多情况下,io.file.buffer.size都被用来设置缓存的大小。较大的缓存可以提供更高的数据传输,但这也就意味着更大的内存消耗和延迟。这个参数要设置为系统页面大小的倍数,以byte为单位,默认值是4KB,一般情况下,可以设置为64KB(65536byte),在这里设置大一倍。
hadoop.tmp.dir 是hadoop文件系统依赖的基础配置,其他临时存放目录的基础,很多路径都依赖它。如果hdfs-site.xml中不配 置namenode和datanode的存放位置,默认就放在这个路径中。