hadoop集群搭建
来源:互联网 发布:上海行知实验学校 编辑:程序博客网 时间:2024/06/07 02:15
系统版本:
master: Ubuntu 14.04 salve1: Ubuntu 14.04
hadoop: hadoop 1.2.1
1.系统配置
修改host文件(目的:通过各机器的机器名访问各机IP,这里实际上建立起了机器名和ip的映射关系):
sudo gedit /etc/hosts删掉127.0.0.1那一行,因为主节点与子节点通信时,会根据机器名找到ip,如果不删除这行,会优先匹配成127.0.0.1,进而找不到主机
在后面添加内容为:
172.22.144.115 master172.22.144.114 slave1172.22.144.116 slave2左边是IP,右边是机器名,下面会修改每台机器的机器名
注意要把集群中所有机器的ip和机器名的映射都加进来
为(master)和子节点(slave)分别创建hadoop用户和用户组:
ubuntu下创建:
先创建hadoop用户组:
sudo addgroup hadoop然后创建hadoop用户:
sudo adduser -ingroup hadoop hadoop给hadoop用户添加权限,打开/etc/sudoers文件(目的:给hadoop用户sudo权限)
sudo gedit /etc/sudoers按回车键后就会打开/etc/sudoers文件了,给hadoop用户赋予root用户同样的权限。
在root ALL=(ALL:ALL) ALL下添加hadoop ALL=(ALL:ALL) ALL,hadoop ALL=(ALL:ALL) ALL这样,就为系统创建了一个新的用户hadoop,建议每台机器都新建一个叫hadoop的用户,便于管理
为本机(master)和子节点(slave)安装JDK环境:
配置软件源(目的:内网可以安装JDK)
ubuntu下一条命令即可:
sudo apt-get install openjdk-6-jre
但是安装好openjdk后有点问题,建议自己下载jdk安装,解压到自定义安装目录后,输入
sudo gedit /etc/environment打开文件后,在后面加上jdk的bin目录路径,如图,/usr/lib/jvm/jdk1.8.0是jdk的安装路径
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/jdk1.8.0/bin"保存后退出,输入
sudo source /etc/environment即可让修改生效,而无需重启
修改 本机(master)和子节点(slave)机器名(目的:方便记忆,最好改成hosts文件对应名)
打开/etc/hostname文件;
sudo gedit /etc/hostname添加在hosts文件里ip对应的主机名,重启生效
注意,以上所有步骤需要在所有机器上配置
2.安装SSH无密码登陆环境(master&slaves):
主节点(master)和子节点(slave)安装ssh服务:
sudo apt-get install ssh openssh-server建立ssh无密码登录环境:
做这一步之前首先建议所有的机子全部转换为hadoop用户名,以防出现权限问题的干扰。
切换的命令为:
su hadoop创建ssh-key,这里我们采用rsa方式;ssh生成密钥有rsa和dsa两种生成方式,默认情况下采用rsa方式。
ssh-keygen -t rsa -P ""进入~/.ssh/目录下,将id_rsa.pub追加到authorized_keys授权文件中,开始是没有authorized_keys文件的;
cd ~/.sshcat id_rsa.pub >> authorized_keys这里实际上涉及公钥和秘钥的问题,关于公钥和秘钥请自行百度
非常重要:
将master节点上的rsa.pub通过ssh传到子节点上(目的:公用公钥密钥)X代表第n个结点
scp ~/.ssh/id_rsa.pub hadoop@slaveX:~/.ssh/进入~/.ssh/目录下,将id_rsa.pub追加到authorized_keys授权文件中,开始是没有authorized_keys文件的(master&slave);
cd ~/.sshcat id_rsa.pub >> authorized_keys这里如果报权限的错,就先将文件传到子节点的home目录下,之后子节点在自行将id_rsa.pub追加到授权文件中,期间还要输入子节点的密码
完成上述操作后,在主节点上输入(X代表第n个节点)
ssh slaveX如果不需要输入密码,说明ssh无密码环境配置成功
3.hadoop安装配置
1.假设hadoop-x-x-x.tar.gz(代表某一版本的hadoop)在桌面,将它复制到安装目录 /usr/local/下
sudo cp hadoop-x-x-x.tar.gz /usr/local/
2. 解压
cd /usr/localsudo tar -zxf hadoop-x-x-x.tar.gz3. 将解压出的文件夹改名为hadoop;
sudo mv hadoop-0.20.203.0 hadoop4. 将该hadoop文件夹的属主用户设为hadoop(hadoop是我们之间为系统创建的用户,hadoop为用户名)
sudo chown -R hadoop:hadoop hadoop5. 打开hadoop/conf/hadoop-env.sh文件
sudo gedit hadoop/conf/hadoop-env.sh6. 配置conf/hadoop-env.sh(找到#export JAVA_HOME=...,去掉#,然后加上本机jdk的路径)
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0
7. 打开conf/core-site.xml文件
sudo gedit hadoop/conf/core-site.xml编辑如下:
<configuration><property><name>fs.default.name</name><value>hdfs://master:9000</value></property></configuration>
注意:master为主结点用户名字,即hosts里面的主节点机器名
8. 打开conf/mapred-site.xml文件
sudo gedit hadoop/conf/mapred-site.xml编辑如下:
<configuration><property><name>mapred.job.tracker</name><value>master:9001</value></property></configuration>
注意:master为主结点用户名字,即hosts里面的主节点机器名
9. 打开conf/hdfs-site.xml文件
sudo gedit hadoop/conf/hdfs-site.xml编辑如下:
<configuration><property><name>dfs.name.dir</name><value>/usr/local/hadoop/datalog1,/usr/local/hadoop/datalog2</value></property><property><name>dfs.data.dir</name><value>/usr/local/hadoop/data1,/usr/local/hadoop/data2</value></property><property><name>dfs.replication</name><value>2</value></property></configuration>10. 打开conf/masters文件,添加作为secondarynamenode的主机名,这里需填写 master 就行
sudo gedit hadoop/conf/masters
11. 打开conf/slaves文件,添加作为slave的主机名,一行一个。
sudo gedit hadoop/conf/slaves
这里填成下列的内容 :
slave1slave212.将hadoop复制到子节点上
scp -r /usr/local/hadoop/ hadoop@slaveX:/usr/local/注意冒号后没有空格
注:这里如果不能复制,就先将文件复制到/home/hadoop下面,即为:
scp -r /usr/local/hadoop hadoop@slaveX:/home/hadoop再在slave机器上将其移到相同的路径下面/usr/local .
并且要将所有节点的hadoop的目录的权限进行如下的修改:
sudo chown -R hadoop:hadoop hadoop
还有很重要的一点,子节点datanode机器要把复制过来的hadoop里面的data1,data2和logs删除掉!
配置完成
4.启动hadoop集群
第一次启动前,要格式化集群,进入hadoop安装目录
cd /usr/local/hadoop
格式化集群:
bin/hadoop namenode -format
不格式化集群会报错:没找到namenode
启动全部服务直接一条命令:bin/start-all.sh查看自己的datanode是否启动.
jps
当jps不能正常使用的时候,按照本文配jdk的方式,在environment文件中添加jdk的bin路径即可
连接时可以在namenode(主节点)上查看连接情况:
bin/hadoop dfsadmin -report也可以直接进入网址:
master:50070
切记,上面的大多数操作请使用hadoop用户,要不然中间会出许多关于权限的问题。
5.运行wordcount
Wordcount是hadoop自带的示例程序,作为入门使用
进入hadoop安装目录的bin目录下,创建测试txt文件(在hadoop集群中创建目录)
查看目录命令
hadoop dfs -ls /目录创建目录:
hadoop dfs -mkdir /input先在本地创建两个txt文件 file01、file02(假定在/home/hadoop目录下)
将两个文件上传至hdfs文件系统
bin/hdfs dfs –put /home/Hadoop/file01 /input/bin/hdfs dfs –put /home/Hadoop/file02 /input/
子节点离开安全模式,否则可能会导致无法读取input的文件:
bin/hdfs dfsadmin –safemode leave
运行Wordcount:
bin/hadoop jar /xxx/xxx.jar wordcount /input/ /output
(这里的/XXX/代表/usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-1.2.1.jar)
jar文件是hadoop自带的,可以在hadoop目录中找到,如果找不到也可以在网上下一个;input是输入目录,output是输出目录
注意在运行Wordcount之前,输出目录不能存在,hadoop会自行建立
查看结果:
bin/hadoop dfs -cat /tmp/output/part-r-00000重复运行需要删除output
bin/hadoop dfs -rmr /tmp/output以上命令都属于hadoop,需要进入hadoop目录才能运行
- hadoop集群搭建(hadoop)
- HADOOP: 搭建hadoop集群
- hadoop集群搭建
- Hadoop集群的搭建
- Hadoop集群搭建
- Hadoop集群搭建
- 搭建hadoop集群
- Nutch+Hadoop集群搭建
- Hadoop集群搭建
- Hadoop集群搭建
- Hadoop环境搭建-集群
- 搭建hadoop集群
- 搭建hadoop集群
- Hadoop集群搭建
- Nutch+Hadoop集群搭建
- 如何搭建hadoop集群
- hadoop分布式集群搭建
- Hadoop集群搭建
- Redis源码分析(十二)--- redis-check-dump本地数据库检测
- 10790 - How Many Points of Intersection?
- Redis学习笔记6--Redis事务
- maple minimax函数
- C++实现链表逆序
- hadoop集群搭建
- 计算机编程入门
- MyEclipse自动提示
- cpp学习笔记 2数据类型
- static
- pcDuino无tf卡安装ArchLinux for ARM过程简记
- Struts2处理流程
- friend
- 常量字符串为什么位于静态存储区