Hadoop 学习之路 (一)

    Hadoop小白,从头开始学习Hadoop ~ 

1.安装 虚拟机 CentOS 6.6,配置网络

2. 配置CentOS 主机名

    方法1:vim /etc/sysconfig/network (重启生效)

            NETWORKING=yes

            HOSTNAME=star

    方法2: hostname star (立即生效)

途中碰到的问题:

        Problem 1: ssh: Could not resolve hostname star: Temporary failure in name resolution

              1.  vi /etc/hosts    查看主机名和 ip 地址是否对应

              2.  source /etc/hosts

                Problem 2: 当在终端执行sudo命令时,系统提示“star is not in the sudoers file”:

                                其实就是没有权限进行sudo,解决方法如下(这里假设用户名是star):

                                1.切换到超级用户:$ su

                                2.打开/etc/sudoers文件:$vim /etc/sudoers

                                3.修改文件内容:

                                    找到“root    ALL=(ALL)       ALL”一行,在下面插入新的一行,内容是“star ALL=(ALL)       ALL”,然后在              vim键入命令“:wq!”保存并退出。

                                     注:这个文件是只读的,不加“!”保存会失败。

                                   4.退出超级用户:$ exit

3. 安装jdk 1.7 以上,配置环境变量

    查询jdk版本:    yum search java|grep jdk

          安装jdk :  yum install java-1.8.0-openjdk

    查询jdk所在目录(which java查询到的是java的执行路径,不是安装路径):

      配置环境变量:  vi /etc/profile             

              source /etc/profile 使之立即生效。

                 java -version 验证jdk是否生效

查看环境变量:

    echo $JAVA_HOME

    echo $CLASSPATH

    echo $PATH

4. Hadoop伪分布式安装

    复制 hadoop 压缩包到虚拟机

    解压 : tar-xzvf hadoop-2.9.1.tar.gz

    解压后,压缩包里的文件如下:

配置环境变量: vi/etc/profile

                           source /etc/profile  使配置的环境变量生效

配置Hadoop:

vi hadoop-env.sh 

原来hadoop-env.sh里面的是: export JAVA_HOME=${JAVA_HOME} 但容易报错,所以可以直接写死。

vi core-site.xml

vi hdfs-site.xml

mv mapred-site.xml.template mapred-site.xml (改名字)

vi mapred-site.xml

vi yarn-site.xml (指定YARN的老大(ResourceManager)的地址)

关闭Linux防火墙: sudo service iptables stop (下次还会启动)

关闭防火墙自启动服务: sudo chkconfig iptables status

                                        sudo chkconfig iptables --list

                                        sudo chkconfig iptables stop

                                        sudo chkconfig iptables --list (下图是关闭之后的状态)

5. 启动Hadoop集群

第一次启动hadoop需要初始化:  hadoop namenode -format (低版本的命令)

                           高版本的改为: hdfs namenode -format

遇到的问题: ERROR namenode.NameNode: Failed to start namenode. (粗心,之前的配置文件里面有单词拼错)

初始化成功!

启动hdfs

sbin里有系统启动管理的脚本

把sbin加入环境变量

遇到问题:bash: start-dfs.sh: command not found    将命令改成sh start-dfs.sh 

遇到问题:jps命令找不到

解决办法参考(https://blog.csdn.net/leshami/article/details/78562642):

vi slaves

启动yarn

在浏览器中访问Hadoop服务

 编辑Windows中 C:\Windows\System32\drivers\etc\hosts,配置虚拟域名。

遇到问题:在Windows中用浏览器访问hadoop失败,但Linux中访问成功。最开始的时候,Linux中访问也不成功,后来重启虚拟机和电脑就成功了。

6. 测试环境

1. 测试HDFS

(1)上传一个文件到HDFS:

hadoop fs -put hadoop-2.9.1.tar.gz hdfs://star:9000/

遇到问题:bash: hadoop: command not found

解决方法:需要将hadoop/bin路径加入PATH,配置环境变量(检查之前配的环境变量有没有拼写错误)

                sudo vi /etc/profile

                source /etc/profile

(2)从HDFS中下载文件

hadoop fs -get hdfs://star:9000/hadoop-2.9.1.tar.gz

2. 测试MapReduce

cd app/hadoop-2.9.1/share/hadoop/mapreduce

Example 1    

    hadoop jar hadoop-mapreduce-examples-2.9.1.jar pi 5 5

Example 2   

    vi test.txt

hadoop fs -mkdir hdfs://star:9000/wordcount  在HDFS建目录

命令行中可简写 hadoop fs -mkdir /wordcount  (在这里的根目录指的是HDFS中的根目录,不是本地根目录)

hadoop jar hadoop-mapreduce-examples-2.9.1.jar wordcount /wordcount/input /wordcount/output

查看运行结果:

hadoop fs -ls /wordcount/output

hadoop fs -cat /wordcount/output/part-r-00000

ps:Hadoop开启关闭调试信息(在/etc/profile中设置)

    开启:export HADOOP_ROOT_LOGGER=DEBUG,console

    关闭:export HADOOP_ROOT_LOGGER=INFO,console

你可能感兴趣的:(Hadoop 学习之路 (一))