一、准备工作
1、首先要保证机器之间能够ping通。
2、修改主机名(在/etc/hostname下修改)
3、添加地址与主机名的映射关系(在/etc/hosts下修改)
4、下载好jdk,并在/etc/profile下配置java路径(将jdk地址添加到JAVA_HOME;将bin添加到PATH,以$开头,以:结尾最后加上$PATH)
二、配置ssh免密登录
1、生成ssh-key
ssh-keygen -t rsa 接三个回车
此时~/.ssh文件下会生成公钥和私钥,要想免密登录哪台机器,就将自己的公钥发给哪台机器。
2、发送公钥(给自己机器也拷一份并且每台机器都要相互发)
ssh-copy-id localhost
ssh-copy-id root@192.168.1.1
三、安装hadoop
1、解压下载好的hadoop压缩文件,例如放到/usr/local中
tar -zxvf hadoop-2.8.1.tar.gz /usr/local/
2、改名(不改也行)
mv hadoop2.8.1 hadoop
3、配置环境
将/etc/profile中添加hadoop路径
4、在hadoop/etc/hadoop/下修改hadoop配置文件(设置namenode是哪台机器,文件上传到hdfs时会复制几份等必要配置)
hadoop-env.sh 配置JAVA_HOME
core-site.xml 配置namenode的地址 最后的configuration中添加
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.1.1</value>
</property>
hdfs-site.xml 配置文件上传到hdfs时的存放位置一个是namenode一个是datanode,这里我都放在hadoop下tmp文件夹,还可以设置一个dfs.replication上传时保存的份数。
<property>
<name>dfs.namenode.name.dir</name>
<value>自己hadoop路径/tmp/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>自己hadoop路径/tmp/data</value>
</property>
以上算是启动hadoop的最简配置。
5、将hadoop文件夹发送到datanode的机器上
scp -r hadoop路径 用户名@datanode的地址 /usr/local/
6、初始化namenode。这项操作只能在没有数据的情况下执行,否则执行完后数据都会删除
hdfs namenode -format
7、启动hdfs
在namenode的机器上,namenode机器也能起一个datanode
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
在datanode的机器上
hadoop-haemon.sh start datanode
启动完用jps看node是否起来了,如果成功了,在localhost:50070的webui界面可以看到各个节点的情况。如果访问不了,需要关闭防火墙,具体linux版本不同,操作方式不同。
四、hdfs文件处理指令
hadoop的dfs是建立在linux文件系统上的文件系统,指令也是非常类似的。
上传到hdfs文件系统的/根目录
hdfs dfs -put 本地文件 hdfs://地址:9000/
指令的帮助
hdfs dfs -help 指令
如果不知道有什么指令打hdfs dfs它会提示有哪些指令
五、遇到的一些问题
1、遇到问题可以在hadoop下的logs文件中找问题所在。用more、cat等指令都能看.log文件
2、检查设置property时是不是有什么地方打错了。比如大小写,/没打等小问题。
3、namenode -format之后,tmp子文件中会生成的类似id的文件用来建立namenode和datanode之间的联系。重复format,会造成id错误,node起不来或者起来了webui上看不到。我处理的方法时将tmp文件夹删除后重新format。