①什么是CDH
CDH就是cloudera hadoop的简称,是对开源hadoop的bug进行了修复的并且解决了大部分的依赖冲突。和开源的apache的hadoop的区别是:开源的会有一些bug和依赖(jar包)冲突。
②安装hadoop包
利用WinSCP软件上传hadoop-2.5.0-cdh5.3.6.tar.gz文件到虚拟机的/usr/local目录下
这个文件下载地址是:http://archive.cloudera.com/cdh5/cdh/5
再然后解压缩hadoop-2.5.0-cdh5.3.6.tar.gz
再SecurCRT输入:cd /usr/local/
然后输入:ll
再输入:tar -zxvf hadoop-2.5.0-cdh5.3.6.tar.gz
然后再:ll
可以看到一个文件夹: hadoop-2.5.0-cdh5.3.6
然后删除tar包:rm -rf hadoop-2.5.0-cdh5.3.6.tar.gz
然后重命名这个文件夹hadoop-2.5.0-cdh5.3.6
输入:mv hadoop-2.5.0-cdh5.3.6 hadoop
再输入:ll查看
进入hadoop目录检查是否有bin和sbin目录
然后输入:cd ..(注意:cd有一个空格再两个连续的点)
需要回到/usr/local目录,再输入:vi ~/.bashrc
然后加上:
export JAVA_HOME=/usr/java/latest
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
再然后:source ~/.bashrc
最后测试一下,分别输入:hadoop
hadoop version
yarn
yarn version
再创建/usr/local/data目录,输入:mkdir data
③修改hadoop的配置文件,修改core-site.xml文件
首先即进入:cd ~(cd有一个空格再~)
再输入:cd /usr/local
再输入:cd hadoop/etc/hadoop
然后输入:ll可以查看到此配置文件
然后输入:vi core-site.xml
更改为:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://sparkproject1:9000</value>
</property>
</configuration>
④修改hadoop的配置文件,修改hdfs-site.xml
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/data/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/data/datanode</value>
</property>
<property>
<name>dfs.tmp.dir</name>
<value>/usr/local/data/tmp</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>(表示三个节点,两个副本,所以为2)
</property>
</configuration>
⑤修改hadoop的配置文件,修改mapred-site.xml
输入:vi mapred-site.xml,发现只有mapred-site.xml.template文件,则重命名一下
输入:mv mapred-site.xml.template mapred-site.xml
然后再输入:vi mapred-site.xml
内容更改为:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
表示不用mapreduc,用yarn。
⑥修改hadoop的配置文件,修改yarn-site.xml
输入: vi yarn-site.xml
更改内容为:
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>sparkproject1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
⑦修改slaves文件
输入:vi slaves
更改内容为:
即:master是sparkproject1,从节点是sparkproject2和3
⑧在另外两台机器上配置hadoop,首先在sparkproject2这台虚拟机上操作。
输入:cd ~
再输入:cd /usr/local
再输入:ll
输入:cd data/
输入:ll
这个目录是空的就是对的
输入:cd ..
回到/usr/local目录下,ll
再输入:scp -r hadoop root@sparkproject2:/usr/local (把当前目录下的hadoop文件夹用递归的形式即-r表示文件夹及所有文件夹下的子文件夹和子文件夹下的所有孙子文件夹......全部拷贝到sparkproject2的/usr/local目录下,而且是用root连接sparkproject2)
(scp表示不同节点进行文件传输命令)
然后再sparkproject2中检查是否有此文件
同样在/usr/local目录下,再输入:scp ~/.bashrc root@sparkproject2:~/
然后在sparkproject2上验证,在usr/local目录下输入:cat ~/.bashrc
在sparkproject2的/usr/local目录下,输入:source ~/.bashrc
在sparkproject2检查,分别输入:hadoop、hadoop version、yarn、yarn version
再在local目录下面创建data文件夹:输入:mkdir data
⑨在另外两台机器上配置hadoop,然后在sparkproject3这台虚拟机上操作。
同上,只不过参数改一下。
scp -r hadoop root@sparkproject3:/usr/local
scp ~/.bashrc root@sparkproject3:~/
然后步骤同上
⑩启动hdfs集群
格式化namenode,在sparkproject1上的/usr/local目录下执行:hdfs namenode -format(注意:可以在SecureCRT下输入,也可以下原始命令窗口输入)
然后,启动hdfs集群:start-dfs.sh(在sparkproject1的local目录下SecureCRT软件中输入),再输入:yes
然后输入:jps可以查看本节点下的java进程(主要看:SecondaryNameNode和NameNode启动了)
有这三个进程就是对的
sparkproject2和sparkproject3有两个进程就是对的(主要看:DataNode启动了)
在主机浏览器输入:sparkproject1:50070用50070端口访问CDH即cloudera 提供的hpfs管理工具,可以看到集群的概况。
可以简单测试一下,在sparkproject1的local目录下,输入:vi hello.txt
在里面随意输入内容:如:hello world
再在sparkproject1的local目录下输入:hdfs dfs -put hello.txt /hello.txt
然后在浏览器输入:sparkproject1:50070
点击:Browse the file system
在360浏览器会出错:点击hello.txt会出错。
需要在Google浏览器输入:sparkproject1:50070
然后:Browse the file system
然后点击hello.txt,会出现以下界面:
⑪启动yarn集群
在sparkproject1的local目录输入:start-yarn.sh
这时会报错,估计是前面的yarn-site.xml文件没有配置好。
但可以用另外一个办法:先输入:cd ~回到主目录
再输入:cd /usr/local来到local目录
输入:cd hadoop
输入:cd sbin
输入:ll发现里面有start-yarn.sh文件
在sbin目录下输入:./start-yarn.sh(注意:前面有一个点和一个斜杠)
注意:一定要在sbin目录下输入,在local目录下输入无效。
然后在sparkproject1输入:jps
发现ResourceManager启动了
再在重节点sparkproject2和3输入:jps
发现NodeManager启动了
检查一下:在主机浏览器输入:sparkproject1:8088,出现了yarn运行的管理界面
如果此时出现连接不同,可能是无线网卡连接到了别的网络,造成主机和虚拟机的网段不一致,主机ping不通虚拟机造成的。这时,重新连接原来名字的无线网络即和虚拟机网段一致的网络即可。